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

时间:2017-11-02 11:48:34

标签: python selenium selenium-webdriver webdriver alert

我想从警告框中读取文字。

如果在警告框中找到此文本,我必须关闭警告框:

Alert Box

4 个答案:

答案 0 :(得分:6)

要从提示框中读取文本,请验证并关闭提醒,您必须先切换到提示,然后按照以下步骤操作提到的步骤:

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

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

  • switch_to.alert()如下:

    alert = driver.switch_to.alert()
    alert_text = alert.text
    # validate the alert text
    alert.accept()
    
  • 根据最佳做法,您应始终为alert_is_present()引导 WebDriverWait ,然后再切换到提示,如下所示:

    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()
    
  

您可以在Why switching to alert through selenium is not stable?

中找到相关的讨论

答案 1 :(得分:2)

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

alert = driver.switch_to_alert()

然后使用alert.text在警报窗口中获取文本。并检查您的文本是否正确。

然后执行此类操作(关闭警报窗口):

alert.accept()

答案 2 :(得分:2)

我的框架中也有类似的情况,这就是我解决它的方法。

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

将此功能置于可能导致错误的功能之后。此外,此示例使用C#和_driver作为驱动程序,这可能与您使用的不同。

答案 3 :(得分:1)

我不懂python,但在java中你可以这样:

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