【发布时间】:2017-03-27 16:22:34
【问题描述】:
如果我只有一个带有“OK”文本的警告对话框,我有以下代码可以正常工作并正确单击“OK”按钮,
def click_element(self, element):
element.click()
def find_by_xpath(self, xpath):
return driver.find_element_by_xpath(xpath)
self.click_element(self.find_by_xpath("//button[contains(.,'OK')]"))
但是,如果页面中有多个带有相同“确定”按钮的警报对话框,则无法单击屏幕上处于活动状态的警报对话框, 我认为这里的问题是隐藏的警报对话框,它也有“确定”按钮。我用谷歌搜索,但没有找到为这个问题编写 xpath 的方法。
这里隐藏了一个 alertify 对话框,并且在我要单击的屏幕上显示了一个 alertify 对话框(使用“确定”按钮)
我注意到当前打开的 alertify 对话框中没有“ajs-out ajs-hidden”类(您可以参考随附的屏幕截图)。
Ref:Alertify Dialog example(参见“默认用法”示例代码)
【问题讨论】:
-
也许您拥有的 xpath 不正确。试试 xpath
'//div[@class='ajs-primary']/button' -
更新了截图,让问题更加清晰
-
虽然在这种情况下 HTML 的图像有些帮助,因为您已经标记了它,但通常将 HTML 作为文本发布更有用,因为它允许读者抓取文本并将其用于尝试解决您的问题。就我而言,我不得不将部分图像转换为文本来测试我的 XPath,这很麻烦。
-
对不起@JeffC,下次我发布任何问题时我会记住这一点... [这是我提供警报对话框示例链接的原因之一:-),它具有相同的 html /css 代码,我已在屏幕截图中发布]