python - 如何使用 selenium (Python) 单击 Alertify 对话框按钮

标签 python selenium

如果我只有一个带有“确定”文本的警报对话框,我的下面的代码可以正常工作并正确单击“确定”按钮,

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”类(您可以引用所附的屏幕截图)。

enter image description here

引用号:Alertify Dialog example (参见“默认用法”示例代码)

最佳答案

感谢您的澄清...现在一切都更有意义了。 :)

因此,您基本上有两个(或更多)“确定”按钮,其中只有一个可见。有几种方法可以做到这一点:

  1. 找到所有包含“确定”的按钮,循环遍历它们以找到可见的按钮,然后单击它。

  2. 创建一个 XPath,查找包含 OK 的按钮,该按钮不是包含类 ajs-hiddenDIV 的后代,然后单击它。

我要做#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/

相关文章:

python - Tensorflow 对象检测 : how to detect on batch

python - pyqt中表格单元格的右对齐

Python 将 ddmmyy 格式转换为有效日期

python - 有没有办法从单个列表理解表达式输出多个列表?

python - 使用 python selenium 单击不可见的元素

java - 如何计算与 Web 应用程序代码相关的 selenium 测试的代码覆盖率

firefox - 为什么 Selenium 有时会以安全模式启动 Firefox(无需用户按下 Shift)?

python - 您可以将选择器列表写入 SQL 中的一列吗?

python - boto3 的 API 文档在哪里?

python - 单击Python中隐藏的输入Selenium