使用 webdriver 从 javascript 警报中获取文本元素

Posted

技术标签:

【中文标题】使用 webdriver 从 javascript 警报中获取文本元素【英文标题】:Get text element from a javascript alert using webdriver 【发布时间】:2014-03-25 23:49:26 【问题描述】:

我在 c# 中使用 selenium webdrive 来学习和编写自动化测试,我遇到过这种情况:

假设您有一个这样的网站:http://referencewebapp.qaautomation.net/register.php,然后您会收到带有错误消息的弹出窗口作为 javascript 警报(例如,如果您在未填写任何信息的情况下按注册)。我需要做的是检查警报中的错误消息(文本)。

我无法使用 driver.FindElement 或 drive.PageSource,因为我看不到它的源代码。我读到了关于尝试选择/更改框架(Selenium cannot get alert thrown in iframe),但我不知道 frameID 是如何。有什么办法可以找到并检查该文本吗?

感谢您的任何建议。

【问题讨论】:

【参考方案1】:
 driver.SwitchTo().Alert().Text;

应该是你所需要的。

【讨论】:

非常感谢!完成了这项工作!【参考方案2】:

您可以尝试使用 selenium Alert 对象获取警报(对话框)的文本。

例如:

    Alert alert = driver.switchTo().alert();
    String alertText = alert.getText();
    if (alertText.equals("error...")) 

        // Do Something...

        // dismiss alert
        alert.dismiss();

    

更多信息在selenium 2.0 documentation.

【讨论】:

谢谢,这很有帮助!

以上是关于使用 webdriver 从 javascript 警报中获取文本元素的主要内容,如果未能解决你的问题,请参考以下文章

webdriver获取变色的元素

使用webdrivers呈现javascript

如何获取由 Javascript 使用 Java / Webdriver 生成的网页的整个源 html 代码?

如何使用带有 IEDriver 的 webdriver 处理 javascript 警报

使用 Selenium WebDriver 读取 JavaScript 变量

WebDriver中执行JavaScript