[英]Can't click element in a treeview - Selenium webdriver java
我正试图通过点击树视图来获取元素。 我可以点击第一级“设备”,但我仍然坚持下一级。
这是浏览器窗口的屏幕截图。
这是HTML代码的缩减版本。
<ul class="jstree-container-ul jstree-children" role="group"> <li role="treeitem" id="devices" class="jstree-node jstree-open"> <i class="jstree-icon jstree-ocl" role="presentation"></i> <a class="jstree-anchor" id="devices_anchor"> <i class="jstree-icon jstree-themeicon" role="presentation"></i> Devices </a> <ul role="group" class="jstree-children" style=""> <li role="treeitem" id="j1_3" class="jstree-node jstree-open"> <i class="jstree-icon jstree-ocl" role="presentation"></i> <a class="jstree-anchor" id="j1_3_anchor"> <i class="jstree-icon jstree-themeicon" role="presentation"></i> HANDSET </a> <ul role="group" class="jstree-children" style=""> <li role="treeitem" id="j1_6" class="jstree-node jstree-open"> <i class="jstree-icon jstree-ocl" role="presentation"></i> <a class="jstree-anchor jstree-clicked" href="#" tabindex="-1" id="j1_6_anchor"> <i class="jstree-icon jstree-themeicon" role="presentation"></i> Apple </a> <ul role="group" class="jstree-children" style=""> <li role="treeitem" id="j1_15" class="jstree-node jstree-leaf"> <i class="jstree-icon jstree-ocl" role="presentation"></i> <a class="jstree-anchor" id="j1_15_anchor"> <i class="jstree-icon jstree-themeicon" role="presentation"></i> iPhone 5s </a> </li> <li role="treeitem" id="j1_16" class="jstree-node jstree-leaf"> <i class="jstree-icon jstree-ocl" role="presentation"></i> <a class="jstree-anchor" id="j1_16_anchor"> <i class="jstree-icon jstree-themeicon" role="presentation"></i> iPhone 6 </a> </li> </ul> </li> </ul> </li> </ul> </ul>
以下是我能够在树视图中单击“设备”的第一个树图标元素
driver.findElement(By.cssSelector("#devices > i.jstree-icon.jstree-ocl")).click();
之后我不知道如何点击HANDSET - > Apple - > iPhone 6旁边的后续树形图标来到iPhone 6页面。
我根本无法使用ID,因为只要将另一个项目添加到树视图中,它们就可以更改。
我尝试过类似的东西,但这对我不起作用。
driver.findElement(By.xpath("//*[contains(text(),'HANDSET')]/../preceding-sibling::i[@class='i.jstree-icon.jstree-ocl']")).click();
更新 :对于那些登陆这里的人来说,这就是我能够使用@santhosh kumar的答案来解决它的方法:
driver.findElement(By.xpath("//a[contains(text(),'HANDSET')]/parent::li/i")).click();
driver.findElement(By.xpath("//a[contains(text(),'Apple')]/parent::li/i")).click();
你能试试这个xpath吗?
"//a[contains(text(),'HANDSET')]/parent::li/i"
希望这可以帮助。 谢谢。
尝试下面没有id的代码:
List<WebElement> icons = driver.findElements(By.xpath("//i[@class='jstree-icon jstree-ocl'"));
for (WebElement e : icons) {
e.click(); // click each
}
在“for”中,您可以使用webElement.getAttribute
或getCssValue
构建以下元素定位器
希望它会有所帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.