xpath返回两个按钮

时间:2019-03-08 04:40:13

标签: python selenium google-chrome 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

1 个答案:

答案 0 :(得分:0)

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

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

经过修改的代码可以处理这种情况。

OrderInTake.productRatePlans.forEach(item => item.productRatePlanCharges // do something with it)