如何使用Python + Selenium读取警告框中的文本

7

我希望能够读取警告框中的文本。

如果在警告框中发现了这个文本,我必须关闭警告框:

Alert Box


你有什么东西吗?(代码) - Ratmir Asanov
@RatmirAsanov,alert = driver.switch_to_alert() 我尝试了这个。 - venkat
在非自动化环境下,你会怎么做?那是一个警告框还是页面上的另一个元素,在特定条件下被填充/可见?如果它是一个简单的警告框,你可以等待它出现,切换到它,获取它的文本属性,然后关闭它。如果它是一个div元素,你可能无法直接访问内部元素的文本,你可能需要先获取其父div,然后遍历该div的子元素,搜索包含警告文本的适当元素。 - BoboDarph
4个回答

8

要从警告框(Alert Box)中读取文本内容,验证并关闭警告(Alert),您需要先切换到警告(Alert),然后按照以下步骤进行:

alert = chrome.switch_to_alert()
alert_text = alert.text
# validate the alert text
alert.accept()

然而,现在似乎switch_to_alert()已被弃用。因此,根据当前实现,您需要使用:

  • switch_to.alert() as follows:

    alert = driver.switch_to.alert()
    alert_text = alert.text
    # validate the alert text
    alert.accept()
    
  • As per best practices you should always induce WebDriverWait for the alert_is_present() before switching to an Alert as follows:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    # other lines of code
    alert = WebDriverWait(driver, 5).until(EC.alert_is_present)
    alert_text = alert.text
    # validate the alert text
    alert.accept()
    
您可以在为什么通过Selenium切换警报不稳定?中找到相关讨论。

3

首先,您应该切换到警告窗口:

alert = driver.switch_to_alert()

通过使用alert.text获取警告窗口上的文本。并检查您的文本是否正确。

然后执行以下操作(关闭警告窗口):

alert.accept()

2

我在我的框架中也遇到了类似的情况,这是我的解决方法。

if (_driver.FindElement(By.XPath("//*[text()[contains(.,'No Sales Found')]")).Enabled)
{
     //Do Something
}

将此代码放在可能引起错误的功能之后。此示例使用C#和_driver作为驱动程序,您使用的可能不同。

0

我不懂Python,但在Java中你可以这样做:

Alert alert = driver.switchTo().alert();
String msg=alert.getText();
if(msg.equals("Message you compare"))
{
alert.accept();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接