首页 > 解决方案 > 如何从列表中唯一地选择一个元素?

问题描述

我怎样才能从这个列表中唯一地选择一个元素?

List<WebElement> listout = driver.findElements(By.cssSelector("span[class='nav-label']"));  
for (list:listout) {
    list.click();
}
list[1].click();

<a _ngcontent-c3="" routerlinkactive="active" class="level-2 expanded ng-star-inserted" href="/rld/(rl:dashboard_tab)">
    <span _ngcontent-c3=""></span>
    <span _ngcontent-c3="" class="nav-label">Status Center</span>
</a>
<<pseudo:before>></<pseudo:before>>
<span _ngcontent-c3=""></span>
<span _ngcontent-c3="" class="nav-label">Status Center</span>
<a _ngcontent-c3="" routerlinkactive="active" class="level-2 expanded ng-star-inserted" href="/rld/(rl:dashboard_tab)">
    <span _ngcontent-c3=""></span>
    <span _ngcontent-c3="" class="nav-label">Status Center</span>
</a>

标签: javaseleniumautomation

解决方案


您的代码中缺少一些内容,例如:

您已经为每个循环定义了这样的:

for (list:listout) {}  

这是不正确的,您一定遇到了编译时错误。

它应该是这样的:

 for (WebElement list:listout) {}  

那么你可以试试这个代码:

List<WebElement> listout = driver.findElements(By.cssSelector("span[class='nav-label']"));  
for (WebElement list : listout) {
      if(list.getText().contains("Your Unique element's text")){
       list.click();
 }
}  

请注意,list[1].click();应单击列表中的第二个元素。
并且您的 css 选择器nav-label包含相同的文本Status Center,因此您必须编写不同的 css 选择器或任何其他定位器,因为这不起作用。


推荐阅读