在selenium中,当页面包含相同结构的多个按钮时,如何根据条件单击所需按钮

时间:2016-07-27 07:24:00

标签: selenium

在网页中,有25条消息可以具有不同的状态,如“打开”,“已分配”等。

如果消息处于打开状态,我想点击"分配"即时生成id的按钮。如何识别和在这种情况下如何点击

以下是页面中的一个按钮的代码

<a style="color:blue"
class="btn assign" 
data-userchannel="tw_757840449054711808~28353935~1000" 
data-elementid="tw_757840449054711808" 
id="tw_757840449054711808" 
title="Assign to user"
rel="act" 
href="/work/assignWork?messageId=tw_757840449054711808~SOLR&amp;dataSource=SOLR&amp;profileId=2305&amp;s360securetoken=mZ2GV6Tbfw7RubGR3Q05_dLM-XM" 
data-tooltip="Assign to user">
</a>

静态元素是类,标题,工具提示。如何实现这种情况。

2 个答案:

答案 0 :(得分:0)

如果我理解正确,您的问题是“分配”按钮位置不对吗?如果是这种情况,那么为什么不使用这样的XPath定位器:.//a[@title='Assign to user']。你可以将它包装在WebDriverWait周围,等待元素出现。

答案 1 :(得分:0)

在所有讨论之后,如果您想选择第一个;按钮,只需尝试使用assign,它会先显示findElement按钮: -

assign

现在正如您所说,driver.findElement(By.cssSelector("a.btn.assign")).click(); 中的批量assign和个人assign页面中有两个功能,批量DOM首先出现,所以它被选中但是您想要选择批量assign之后的单个分配,然后您应该尝试使用assign查找所有findElements按钮,并使用以下索引选择其中任何一个: -

assign

或者您可以使用List<WebElement> elements = driver.findElements(By.cssSelector("a.btn.assign")).click(); if(elements.size() > 2) { //Now here you can pass index to get individual assign button elements.get(1).click(); //it will click second assign button and so on } 找到第一个单独的xpath按钮,如下所示: -

assign

希望它有所帮助.. :)