【问题标题】:Can not get text with Selenium from web-browser alert pop-up无法从 Web 浏览器警报弹出窗口中使用 Selenium 获取文本
【发布时间】: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: .getTextJava bindings 中,.text 是 Python 的正确方法。
  • 致 OP:向我们展示它的样子?可能通过截图或Weburl,你也可以检查confirmed box吗?
  • .getText() 和 .get_text() 都导致 AttributeError: 'Alert' object has no attribute 'getText'/'get_text' python 没有它们
  • 我很乐意检查这些警报(确认框),但我不知道如何。您希望通过屏幕截图看到什么?

标签: python-3.x selenium text alert webdriverwait


【解决方案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

参考文献

您可以在以下位置找到一些相关的详细讨论:

【讨论】:

  • 当然,我做到了。我在第一个例子中提到过。
  • 我刚刚尝试了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() ) 我得到 , TypeError('__init__() 需要 1 个位置参数,但给出了 2 个参数') ,
  • @C4H7Cl2O4P 这是一个错字,已更正。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-19
  • 2020-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多