如果我只有一个带有“确定”文本的警报对话框,我的下面的代码可以正常工作并正确单击“确定”按钮,
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对话框中没有“ajs-out ajs-hidden”类(您可以引用所附的屏幕截图)。
引用号:Alertify Dialog example (参见“默认用法”示例代码)
最佳答案
感谢您的澄清...现在一切都更有意义了。 :)
因此,您基本上有两个(或更多)“确定”按钮,其中只有一个可见。有几种方法可以做到这一点:
找到所有包含“确定”的按钮,循环遍历它们以找到可见的按钮,然后单击它。
创建一个 XPath,查找包含 OK 的按钮,该按钮不是包含类
ajs-hidden
的DIV
的后代,然后单击它。
我要做#2。
driver.find_element_by_xpath("//div[not(@class='ajs-hidden')]//button[.='OK']").click()
旁注/建议...不要像使用 click_element()
和 find_by_xpath()
那样将基本的 Selenium 方法包装在包装函数中。他们实际上没有实现任何目标,而您已经为 Selenium 创建了一个专有的 API,其他阅读您代码的人必须学习该 API。把事情简单化。上面的一行应该完全满足您的需要,并且任何了解 Selenium 和 python 的人都可以理解。
关于python - 如何使用 selenium (Python) 单击 Alertify 对话框按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43020703/