xpath返回两个按钮

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了xpath返回两个按钮相关的知识,希望对你有一定的参考价值。

Chrome中的xpath表达式$x("//button[text() = 'Got it']")返回两个按钮元素,但页面中只有一个这样的按钮。

就数据而言,两个元素看起来都相同。使用selenium和python点击数组的第二个元素有时可以工作但多次返回Element is not interactable错误。

有什么指针吗?

<button class="button slim-large" ng-click="ctrl.closeDialog()">Got it</button>

enter image description here enter image description here

添加此代码以处理重复按钮的情况,其中一个是可见的而另一个不可见。

    button_clicked = False
    elems = self.find_all_by_xpath(locator="//button[contains(text(),'Got it')]")
    for elem in elems:
        if elem.is_displayed():
           elem.click()
           button_clicked = True

    if button_clicked == False:
       print("None of " + str(len(elems)) + " buttons are click-able")

谢谢,Sameer

答案

感谢@JohnJordan的评论。页面上确实有两个按钮,其中一个是隐藏的。希望开发人员可以为所有元素使用唯一ID。

我删除了具有可见“Got It”按钮的模态div并再次运行xpath,现在只返回了一个按钮!这意味着DoM中还有一个隐藏按钮。

修改代码来处理这种情况。

button_clicked = False
elems = self.find_all_by_xpath(locator="//button[contains(text(),'Got it')]")
for elem in elems:
    if elem.is_displayed():
       elem.click()
       button_clicked = True

if button_clicked == False:
   print("None of " + str(len(elems)) + " buttons are click-able")

以上是关于xpath返回两个按钮的主要内容,如果未能解决你的问题,请参考以下文章

按一次返回按钮停留在同一个片段上,如果按两次,它将返回到上一个片段

如果在 WebView 片段中按下后退按钮,如何返回上一页?

从片段返回到另一个片段的按钮

Android 插件化VirtualApp 源码分析 ( 目前的 API 现状 | 安装应用源码分析 | 安装按钮执行的操作 | 返回到 HomeActivity 执行的操作 )(代码片段

Selenium Xpath元素无法定位 NoSuchElementException: Message: no such element: Unable to locate element(代码片段

HTML代码片段