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

  • 本文关键字:按钮 何根 条件 单击 结构 面包 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>

静态元素包括类、标题、工具提示。 如何实现此方案。

经过所有讨论,如果您想选择第一个按钮assign您只需尝试使用 findElement ,它为您提供第一个assign按钮:-

driver.findElement(By.cssSelector("a.btn.assign")).click();

现在正如您所说,页面中有两个功能 批量assignDOM中的单个assign ,批量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按钮,如下所示:-

driver.findElement(By.xpath("(//*[@class = 'msgContent']/descendant::a[contains(@class,'btn assign')])[1]")).click();

希望它有帮助..:)

如果我

理解正确,您的问题是分配按钮位置不正确?如果是这种情况,那么为什么不使用XPath定位器,如下所示:.//a[@title='Assign to user']。你可以把它包装在WebDriverWait上,等到元素出现。

最新更新