java - 如何使用 Selenium WebDriver 单击两个相同的属性?

标签 java button xpath selenium-webdriver

firepath中我看到两个相同的属性,firepath有两个结果。

下面是 firebug 中突出显示的 HTML 代码:

<button class="list_header_search_toggle icon-search btn btn-icon table-btn-lg" style="margin-left:0px">

下面是整个代码:

<button class="list_header_search_toggle icon-search btn btn-icon table-btn-lg" style="margin-left:0px">
<span class="sr-only">Search</span>
</button>

注意:只有 1 个搜索按钮,我到处搜索,只有 1 个,但它显示两个??

如何在 selenium Web 驱动程序中编写此代码?

来自 firepath 的片段:

enter image description here

更新:

Html 代码图像,来自 firepath:

enter image description here

最佳答案

您可以使用XPath 函数,例如:

  • position() 返回元素在 DOM 中的位置

//button[@id='hdr_problem_task']/th[2]/button[position()=1]

  • last()

//button[@id='hdr_problem_task']/th[2]/button[last()]

  • 类似 first() 的东西不存在,您可以使用索引代替:

//button[@id='hdr_problem_task']/th[2]/button[1]

此外,如果按钮有一些文本,您也可以使用它:

//button[@id='hdr_problem_task']/th[2]/button[text()='button name']

或使用contains()

//button[@id='hdr_problem_task']/th[2]/button[contains(text(), 'button name')]

更新:

该按钮的名称为 Search,您可以将 XPath 与 - contains() 一起使用。

还有一个小建议,不要忘记 future 的支持。而不是以下定位器:

//*[@id='hdr_problem_task']/th[2]/button

更好的是:

//button[@id='hdr_problem_task']/th[2]/button

关于java - 如何使用 Selenium WebDriver 单击两个相同的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42926821/

相关文章:

xpath - 如何在LibXml 2中使用Xpath

java - 在 Java 中使用 Thread.yield()

javascript - 如何编写脚本来检测网站上的 Activity 按钮?

java - 查找包含特定字符串且带有空格的文本?

css - Bootstrap 链接按钮和按钮的宽度不一样。怎么修?

python - 连续的 ipywidgets 按钮

python - XPath 定位 sibling 之后的 child

java - 如果单击另一个单击按钮声音开始,则设置声音停止

java - 由于某种原因,当将该对象放入下面的线程时,该对象未被确认为存在

java - 从另一个类更改 JFrame 的可见性