无法从 Web 浏览器警报弹出窗口中使用 Selenium 获取文本
Posted
技术标签:
【中文标题】无法从 Web 浏览器警报弹出窗口中使用 Selenium 获取文本【英文标题】:Can not get text with Selenium from web-browser alert pop-up 【发布时间】:2022-01-22 06:38:39 【问题描述】:某些网站可能会通过弹出式警报向我提出不同的问题。
我可以用Selenium (python)
抓住它们。但无法看到他们的文字。
我试过了
an_alert_object = driver.switch_to.alert
和
an_alert_object = selenium.webdriver.common.alert.Alert(driver)
和
an_alert_object = WebDriverWait(driver,10).until(EC.alert_is_present())
我总是避免NoAlertPresentException
我可以的
an_alert_object.accept()
以任何方式。
但我永远无法得到an_alert_object.text
,它总是空的。为什么?
我究竟做错了什么 ?如何获取警报文本(实际上是确认框)?
【问题讨论】:
Alert 类型应该有一个 getText() 方法...尝试使用 an_alert_object.getText(); (并且可能将其转换为 Alert 类型... Alert an_alert_object = ...) @pcalkins:.getText
在 Java bindings
中,.text
是 Python 的正确方法。
致 OP:向我们展示它的样子?可能通过截图或Weburl,你也可以检查confirmed box
吗?
.getText() 和 .get_text() 都导致 AttributeError: 'Alert' object has no attribute 'getText'/'get_text' python 没有它们
我很乐意检查这些警报(确认框),但我不知道如何。您希望通过屏幕截图看到什么?
【参考方案1】:
在尝试获取文本之前,您需要先切换到Alert:
alert = driver.switch_to.alert()
最好将WebDriverWait诱导为alert_is_present(),提取文字如下:
alert = WebDriverWait(driver, 5).until(EC.alert_is_present())
time.sleep(3)
alert_text = alert.text
参考文献
您可以在以下位置找到一些相关的详细讨论:
How to read the text from the alert box using Python + Selenium【讨论】:
当然,我做到了。我在第一个例子中提到过。 我刚刚尝试了an_alert_object = driver.switch_to.alert an_alert_object = WebDriverWait(driver,10).until(EC.alert_is_present()) print(an_alert_object.text)
并再次收到空警报文本。
@C4H7Cl2O4P 您可以根据答案更新在两者之间添加睡眠吗?
当我使用 (EC.alert_is_present) 而不是 (EC.alert_is_present() ) 我得到 以上是关于无法从 Web 浏览器警报弹出窗口中使用 Selenium 获取文本的主要内容,如果未能解决你的问题,请参考以下文章
如何检查是不是存在 SpringBoard 警报/Safari 浏览器弹出窗口?
如何使用 Selenium WebDriver 处理登录弹出窗口?