参考这条火道:
.//*[@id='gwt-uid-20138']
HTML:
<input id="gwt-uid-20138" type="checkbox" value="on" tabindex="0">
注意:此ID值已更改。
答案 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-')]"));