繁体   English   中英

无法在树视图中单击元素 - Selenium webdriver java

[英]Can't click element in a treeview - Selenium webdriver java

我正试图通过点击树视图来获取元素。 我可以点击第一级“设备”,但我仍然坚持下一级。

这是浏览器窗口的屏幕截图。

Webapp的树视图

这是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.getAttributegetCssValue构建以下元素定位器

希望它会有所帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM