![](/img/trans.png)
[英]Selenium webdriver - Iterate, find webelement and then click on it - how can I do that?
[英]How do i locate this webelement in Selenium Webdriver?
我的问题是在网页上找到一个复选框元素。 我正在将Selenium Webdriver与Eclipse,TestNG和Java一起用作所选语言。
检查复选框元素可以得到以下结果:
<input type="checkbox" data-privid="13" data-priviligeeid="406">
我尝试使用以下xpath代码,其中字符串是从Chrome浏览器中的元素复制的xpath。 我添加了转义字符以使引号被接受:
WebElement ChangeButton = driver.findElement(By.xpath("[@id=\"privs\"]/div[1]/div[2]/label/input"));
但是这样做会使ChangeButton为空。
我还尝试遍历一个数组,直到找到一个特定的data-privid值:
ArrayList<WebElement> inputs =(ArrayList<WebElement>)driver.findElements(By.tagName("input"));
if(inputs != null) {
for(WebElement checkbox : inputs) {
String attribute = checkbox.getAttribute("data-privid");
System.out.println(attribute);
....
}
}
这也不起作用,因为属性从不获取任何值。
有什么想法可以解决这个问题吗?
编辑:这已经解决了!
您的解决方案最初对我不起作用的原因是,因为我在属于一个类的方法中进行了导航,而在第二个类中获取了Web元素。 我试图将它们组合到一个xml
文件中,但是由于某些原因,当定位器类尝试执行其操作时,我最终输入了错误的url
。 谢谢大家提供的答案。 我和css
定位器一起使用,效果很好。
试试下面的XPath
//input[@type='checkbox' and @data-privid='13']
希望它能对您有所帮助:)
无需使用XPath。 CSS选择器更加方便。 尝试这个:
driver.findElement(By.cssSelector("input[type='checkbox'][data-privid='13']"));
您的xpaht表达式"[@id=\\"privs\\"]/div[1]/div[2]/label/input"
无效 。
似乎您尝试在第一步中找到一个id="privs"
元素,即为: "*[@id='privs']"
或(最好是该元素为div的情况) "div[@id='privs']"
然后,您的xpath可能如下所示:
"div[@id='privs']/div[1]/div[2]/label/input"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.