【问题标题】:How to handle 'Are you sure you want to navigate away from this page' on page close?如何在页面关闭时处理“您确定要离开此页面”吗?
【发布时间】:2011-08-26 06:47:35
【问题描述】:

我有一个 Web 应用程序,它生成一条 JS 消息 “您确定要离开此页面吗?”当您尝试打开新页面时。 我知道我可以通过

处理此消息
Selenium.getAlert();

(或者一些修改,我还没试过)

但我的主要问题是只有当我离开此页面时才会生成此消息。 在 selenium 中,我可以使用离开页面

Selenium.open("new address");

Selenium.back();

所以我使用这样的代码

Selenium.open("new address");
Selenium.getAlert();

但问题是 Selenium.open 在新页面完全加载之前不会完成并转到程序中的下一个代码行,但是在程序转到下一个代码行并处理此警报之前无法加载页面.所以这是一个阻塞的情况,我不知道如何处理它。

【问题讨论】:

标签: java javascript selenium


【解决方案1】:

我不认为它可以完全保留在 Selenium RC API 中。我有类似的情况,我通过在open() 之前启动一个AutoIt 脚本来处理,该脚本等待提示并回答它。这仅适用于 Windows,但如果您需要其他系统的东西,我相信有等效的工具。

Selenium 在页面加载过程中出现的警报和确认(这是 - 确认有一个 OK/Cancel 选项)一直存在问题。甚至在其中一条错误消息中还包含一个古老的错误编号,说明它无法捕获它们。

【讨论】:

  • 是的,我也想到使用 AutoIt 脚本来处理这种情况。它不漂亮,只在 Windows 上,但它的工作
【解决方案2】:

用途:

openAndWait(..)

也许这个SO question 会帮助你。

【讨论】:

  • 在当前版本的 selenium 中,现在有 openAndWait 操作,正如我从文档中理解的那样'"AndWait" 后缀是隐式的。'
  • “AndWait”内容仅适用于 Selenium IDE,Selenium RC 不支持。
  • s/now/no/ 发帖者真的需要像 openAndDontWait() 这样的东西,如果它存在的话。
【解决方案3】:

我不知道这是否可行,但这是一个想法。您可以尝试以下方法:

try {
    driver.manage().timeouts().implicitlyWait(1, TimeUnit.SECONDS);
    Selenium.open("new address");
} catch (Exception e) {
    // Should throw after 1 second
}

// Now we may be able to interact with the alert.
Selenium.getAlert();

【讨论】:

    猜你喜欢
    • 2011-10-12
    • 2016-12-31
    • 1970-01-01
    • 1970-01-01
    • 2019-08-13
    • 2010-11-10
    • 1970-01-01
    • 2012-12-08
    • 1970-01-01
    相关资源
    最近更新 更多