2013-03-15 171 views
0

我正在PHP(5.3.15)中编写一个需要测试弹出窗口关闭的Selenium(服务器2.31.0)测试。弹出窗口使用jQuery UI Dialog Widget实现。弹出窗口本身包含一些简单的文字(HelloWorld),它不会出现在弹出窗口之外。使用Selenium检测Chrome中的弹出窗口的关闭

使用isTextPresent("HelloWorld");检测弹出窗口的外观是正常的。然后我用clickAt("//a[contains(@class, 'ui-dialog-titlebar-close')]");(我可以看到工程)关闭窗口,然后在!isTextPresent("HelloWorld");关闭的弹出框上进行测试。我应该补充一点,我正在做适当的事情来确保弹出窗口有时间打开/关闭;有一个重复的暂停&检查周期,我也可以看到效果,如果我强迫明确的睡眠问题。

这在Firefox(19.0.2)下正常工作,但在Chrome(25.0.1364.172)下失败。即该窗口正在关闭,但我没有在Selenium下检测到它。我预计这是由于Selenium如何执行isTextPresent检查和/或仅弹出窗口而不是关闭。

我正在寻找一种检测在Chrome上工作的关闭弹出窗口的方法。跨浏览器将是伟大的,但目前,我可以在不同的浏览器上运行不同的测试。

+1

将方法更改为'isVisible()'或'isDisplayed()'怎么办?我的猜测是这个弹出窗口仍然在页面上,但被javascript隐藏。所以多数民众赞成为什么isTextPresent可以声称你的文字仍然存在... – 2013-03-15 09:37:57

回答

0

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

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