如何从列表中唯一选择一个元素?

时间:2018-07-26 14:10:00

标签: java selenium automation

如何从此列表中唯一选择一个元素?

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>

1 个答案:

答案 0 :(得分:0)

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

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

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();应该单击列表中的第二个元素。
nav-label和您的css选择器包含相同的文本状态中心,因此您将不得不编写不同的css选择器或任何其他定位器,因为这将不起作用。