页面中所有复选框的属性每次运行代码时都会更改,如何查找复选框的元素

时间:2018-01-11 12:41:09

标签: selenium selenium-webdriver

参考这条火道:

.//*[@id='gwt-uid-20138']

HTML:

<input id="gwt-uid-20138" type="checkbox" value="on" tabindex="0">

注意:此ID值已更改。

3 个答案:

答案 0 :(得分:1)

如果ID正在更改,可能尝试使用此复选框旁边的标签查找复选框? 尝试这样的事情:

/label[text()="test"]/preceding-sibling::input

答案 1 :(得分:0)

要查找checkbox元素,您必须获取id属性的帮助。但正如您所看到的,id属性是动态的,因此我们必须使Locator Strategy 动态。现在,如果您仔细观察id属性,您会发现 gwt-uid - 部分是constant,只剩下其余部分,即 20138 dynamic。因此,我们可以对dynamic id 使用 starts-with()方法,并唯一地标识复选框我们还将在构造定位器时包含类型属性。因此,要查找checkbox元素,您可以使用以下代码行:

  • Java:

    WebElement element = driver.findElement(By.xpath("//input[starts-with(@id,'gwt-uid-') and @type='checkbox']"));
    

答案 2 :(得分:0)

如果您的复选框的选择器不断更改,您需要使用始终保持不变且唯一的属性来识别它。

从您的示例中可以看出gwt-uid-部分始终是常量,您可以使用相同的部分来识别元素。

driver.findElement(By.xpath("//input[starts-with(@id, 'gwt-uid-')]"));