【问题标题】:Detecting the closing of a popup in Chrome, using Selenium使用 Selenium 检测 Chrome 中弹出窗口的关闭
【发布时间】:2013-03-15 09:32:26
【问题描述】:

我正在用 PHP (5.3.15) 编写 Selenium (server 2.31.0) 测试,该测试需要测试弹出窗口是否关闭。弹出窗口是使用jQuery UI Dialog Widget 实现的。弹出窗口本身包含一些不会出现在弹出窗口之外的简单文本 (HelloWorld)。

使用isTextPresent("HelloWorld"); 检测弹出窗口的外观很好。然后我用clickAt("//a[contains(@class, 'ui-dialog-titlebar-close')]"); 关闭窗口(我可以看到它有效),然后测试用!isTextPresent("HelloWorld"); 关闭的弹出窗口。我应该补充一点,我正在做适当的事情以确保弹出窗口有时间打开/关闭;有一个重复的暂停和检查周期,如果我通过显式睡眠强制问题,我也可以看到效果。

这在 Firefox (19.0.2) 下运行良好,但在 Chrome (25.0.1364.172) 下失败。 IE。窗口正在关闭,但我没有在 Selenium 下检测到这一点。我预计这是由于 Selenium 如何进行 isTextPresent 检查和/或弹出窗口仅被隐藏而不是关闭。

我正在寻找一种方法来检测适用于 Chrome 的关闭弹出窗口。跨浏览器会很棒,但目前我可以在不同的浏览器上运行不同的测试。

【问题讨论】:

  • 将方法更改为isVisible()isDisplayed() 怎么样?我的猜测是这个弹出窗口仍将在页面上,但被 javascript 隐藏。这就是为什么 isTextPresent 可以声称文本仍然存在的原因......

标签: php jquery google-chrome selenium


【解决方案1】:

可以在弹出窗口 (isVisible("//a[contains(@class, \'ui-dialog-titlebar-close\')]");) 上使用isVisible 生成等效测试(就测试的设计目的而言,而不是检查的特定先前行为),并在关闭后进行相应的否定测试弹出窗口。这适用于 Chrome (25.0.1364.172) 和 Firefox (19.0.2)。

这不是对弹出窗口的内容进行相同的检查,但是,由于所需的效果是测试弹出窗口的存在,这就足够了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-11
    • 1970-01-01
    • 2018-08-21
    • 1970-01-01
    相关资源
    最近更新 更多