Selenium:地址复选框的标签?

时间:2017-07-16 07:35:34

标签: selenium cucumber

我有this page的以下功能文件:

@checkbox
Feature: Check the checkbox
  Webdriver should be able to check the checkbox lists

  Scenario: Check the checkbox
    Given I am in checkbox task page 
    Then I can check the hobbies from the checkbox


  Scenario Outline: Title of your scenario outline
    Given I am in "http://suvian.in/selenium/1.6checkbox.html"
    Then I can check the <id> from the checkbox

    Examples: 
       | id |
       |  1 |
       |  2 |
       |  3 |
       |  4 |

问题是,我在我的场景大纲中涉及了id这样的详细信息。我想将其更改为

 Examples: 
           | hobby      |
           |  dancing   |
           | sporting   |
           |  singing   |
           |  PC Gaming |

但我不知道,如何解决这个问题:

<input style="width:20px;height:20px;" type="checkbox" id="2">

在我的selenium webdriver中?

2 个答案:

答案 0 :(得分:1)

您可以使用xpath preceding-sibling

//label[contains(.,'Singing')]/preceding-sibling::input

这将找到标签Singing,并从那里找到上一个兄弟<input>标签。

答案 1 :(得分:0)

您可以尝试查找class =&#39; intro-message&#39;

下的所有标签
List<WebElement> labels = driver.findElements(By.xPath("//div[@class='intro-message']/label"));

然后尝试循环列表中的每个元素以读取其文本,如果匹配您在黄瓜示例中传递的值,则可以获取&#39;的属性值。对于那个元素

public WebElement getCheckboxLocator(string checkboxName){
    int id = 0;
    foreach(WebElement ele in labels){
        if(ele.getAttribute("textContent").equalsIgnoreCase(checkboxName)){
            id = Integer.parseInt(ele.getAttribute("for"));
        }
    }
return driver.findElement(By.xPath(string.format("//div[@class='intro-message']/input[id='%s']", id)));
}