如何使用selenium(Python)单击Alertify对话框按钮
我有下面的代码,可以正常工作,如果我只有一个带有“OK”文本的alertify对话框,请正确单击“OK”按钮 但是,如果我在页面中有多个alertify对话框,并且有相同的“OK”按钮,那么它无法单击屏幕上处于活动状态的alertify对话框, 我认为这里的问题是隐藏的alertify对话框,它也有“OK”按钮。我在谷歌上搜索过,但没有找到为这个问题编写xpath的方法 这里隐藏了一个alertify对话框,屏幕上有一个alertify对话框,我想点击它(用“OK”按钮) 我注意到当前打开的alertify对话框中没有“ajs out ajs HINDED”类(您可以参考附带的屏幕截图)如何使用selenium(Python)单击Alertify对话框按钮,python,selenium,Python,Selenium,我有下面的代码,可以正常工作,如果我只有一个带有“OK”文本的alertify对话框,请正确单击“OK”按钮 但是,如果我在页面中有多个alertify对话框,并且有相同的“OK”按钮,那么它无法单击屏幕上处于活动状态的alertify对话框, 我认为这里的问题是隐藏的alertify对话框,它也有“OK”按钮。我在谷歌上搜索过,但没有找到为这个问题编写xpath的方法 这里隐藏了一个alertify对话框,屏幕上有一个alertify对话框,我想点击它(用“OK”按钮) 我注意到当前打开的al
参考:(参见“默认用法”示例代码)感谢您的澄清。。。现在一切都变得更有意义了。:) 所以你基本上有两个(或更多)OK按钮,其中只有一个是可见的。有几种方法可以做到这一点:
ajshidden
的DIV的后代,然后单击它
click\u element()
和find\u by\u xpath()
那样将基本的Selenium方法包装在包装器函数中。他们真的什么也做不到,您已经为Selenium创建了一个专有API,其他阅读您代码的人必须学习它。保持简单。上面的一行代码应该完全满足您的需要,任何了解Selenium和python的人都可以理解。下面修复了我的问题
正确的xpath:
driver.find_element_by_xpath("//div[contains(@class, 'alertify') and not(contains(@class, 'ajs-hidden'))]//button[.='OK']")
感谢JeffC向我展示了如何排除(否定条件)classs:-)可能您使用的xpath不正确。尝试xpath
“//div[@class='ajs-primary']/button'
更新了屏幕截图以获得更清晰的问题,而本例中的HTML图像有些帮助,因为您已经标记了它,一般来说,将HTML作为文本发布更有用,因为它允许读者获取文本并使用它来解决您的问题。在我的例子中,我不得不将部分图像转换成文本来测试我的XPath,这很麻烦。抱歉@JeffC,下次我发布任何问题时,我会记住这一点。。。[这是我给出alertify dialog:-)示例链接的原因之一,该链接与我在屏幕截图中发布的html/css代码相同]嗨,我已经更新了屏幕截图,以便更清楚地显示issuedriver。通过xpath(“div[not(@class='ajs-hidden')]//button[.='OK'])查找元素。单击()不起作用:(它适用于您提供的HTML。发布页面链接?如果您发现此(或任何)答案有帮助,请向上投票。如果此答案回答了您的问题,请将其标记为已接受的答案。谢谢!
driver.find_element_by_xpath("//div[not(@class='ajs-hidden')]//button[.='OK']").click()
driver.find_element_by_xpath("//div[contains(@class, 'alertify') and not(contains(@class, 'ajs-hidden'))]//button[.='OK']")