Selenium 等待用户点击 python 中的警告对话框

Posted

技术标签:

【中文标题】Selenium 等待用户点击 python 中的警告对话框【英文标题】:Selenium Wait for user to click on alert dialog box in python 【发布时间】:2019-10-12 07:54:59 【问题描述】:

我在浏览器中创建了一个对话框(当用户输入详细信息发生错误时会发生这种情况)。我需要的是等到用户点击对话框之前自动执行(仅用于测试)。这是我所拥有的

# driver is a chrome web driver
driver.execute_script("alert('qwer');")
wait = WebDriverWait(driver, 10)    
element = wait.until(EC.alert_is_present()) 

我尝试在线搜索,但只有当用户单击网页内的按钮而不是生成的对话框时才得到答案。怎么做(如果可能)?

【问题讨论】:

嘿,您是否正在寻找一种方法来等待警报框可见,或者与警报框交互的方法是否有用? 您可以尝试使用内置的time 模块。我忘了你要调用哪个函数,但是有一个等待一个动作,然后执行下面的代码。 也出于好奇-您发布的代码中的变量“EC”是什么?谢谢:) 我只想等到用户点击对话框。类似于 alert,accept() 但由用户完成。 【参考方案1】:
from time import sleep
while EC.alert_is_present()(driver):
    sleep(30)

如果您只是想提醒用户,请使用 pymsgbox 或 Telegram API 向他发送消息,

from pymsgbox import alert
alert("Hey User")

【讨论】:

在这里你只是在等待一段时间。所以,无法检查用户点击?! 查看while条件 好吧,即使我点击确定后它也会一直运行。 即使过了 30 多岁?减少秒数。 如果警报已关闭并且我尝试 driver.switch_to.alert 我没有收到 NoAlertPresentException。所以,我想我会在它发生时捕获异常退出循环。谢谢。

以上是关于Selenium 等待用户点击 python 中的警告对话框的主要内容,如果未能解决你的问题,请参考以下文章

selenium.common.exceptions.ElementNotVisibleException:消息:元素不可交互,显式等待不能使用Selenium和Python

selenium中的三种等待方式(显示等待WebDriverWait()隐式等待implicitly()强制等待sleep())---基于python

即使在等待之后,Python 中的 Selenium 也无法识别 DOM 中的变化

Python Selenium 2 API 并等待 DOM 准备好/元素可见

05-Selenium的三种等待

Selenium 等待 HTML 元素更改