Selenium 每次运行代码时,页面中所有复选框的属性都在更改,如何查找复选框的元素
请参阅此壁炉:Selenium 每次运行代码时,页面中所有复选框的属性都在更改,如何查找复选框的元素,selenium,selenium-webdriver,Selenium,Selenium Webdriver,请参阅此壁炉: .//*[@id='gwt-uid-20138'] HTML: <input id="gwt-uid-20138" type="checkbox" value="on" tabindex="0"> 注意:此id值已更改。要查找复选框元素,必须借助id属性。但是正如您所看到的,id属性是动态的,因此我们必须使我们的定位器策略动态的。现在,如果您仔细观察id属性,您将观察到gwt uid-部分是常量,只有剩余部分,即20138是动态。因此,我们可以对动态
.//*[@id='gwt-uid-20138']
HTML:
<input id="gwt-uid-20138" type="checkbox" value="on" tabindex="0">
注意:此id值已更改。要查找
复选框
元素,必须借助id
属性。但是正如您所看到的,id
属性是动态的,因此我们必须使我们的定位器策略
动态的。现在,如果您仔细观察id
属性,您将观察到gwt uid-部分是常量
,只有剩余部分,即20138是动态
。因此,我们可以对动态
使用start-with()方法,并且为了唯一地标识复选框,在构造定位器时,我们还将包含type属性。因此,要查找复选框
元素,可以使用以下代码行:
- 爪哇:
WebElement element = driver.findElement(By.xpath("//input[starts-with(@id,'gwt-uid-') and @type='checkbox']"));
/label[text()="test"]/preceding-sibling::input
如果复选框的选择器不断更改,则需要使用始终不变且唯一的属性来标识它 从您的示例中可以看到
gwtuid-
part始终是常量,您可以使用它来标识元素
driver.findElement(By.xpath("//input[starts-with(@id, 'gwt-uid-')]"));
您正在使用哪个Selenium客户端?Java/Python/C#?请提供更多HTML代码,如下tomasz.myszka回答,您必须使用复选框前/后的文本来帮助查找复选框。我不认为你不能使用id startswith'gwt-uid'来查找复选框,我猜id startswith'gwt-uid'可能会看到一些元素:这样的期望是,用户提问时不仅会研究回答他们自己的问题,还会分享研究、代码尝试和结果。这表明你花了时间来帮助自己,它使我们避免重复显而易见的答案,最重要的是,它帮助你得到一个更具体和相关的答案!另见: