我正在尝试通过Selenium-RC / PHPUnit在Internet Explorer中运行基本测试,它总是返回
# phpunit c:\googletest.php
PHPUnit 3.4.15 by Sebastian Bergmann.
E
Time: 35 seconds, Memory: 4.75Mb
There was 1 error:
1) Example::testMyTestCase
PHPUnit_Framework_Exception: Response from Selenium RC server for testComplete()
.
Timed out after 30000ms.
C:\googletest.php:17
FAILURES!
Tests: 1, Assertions: 0, Errors: 1.
Paul@PAUL-TS-LAPTOP C:\xampp
#
命令历史记录中的最后一个命令是waitForPageToLoad(30000)。相同的测试运行良好,并在Firefox中完成。如何在Internet Explorer中运行和完成此测试?
由于
答案 0 :(得分:3)
selenium中有一个开放的错误导致waitForPageToLoad有时会在IE上超时。
http://jira.openqa.org/browse/SRC-552
它被标记为在IE6上发生,但我在IE9中遇到同样的错误。
解决方法是等待,例如页面上正在加载的特定DOM元素,而不是使用waitForPageToLoad。例如:waitForVisible('css =#header')
答案 1 :(得分:1)
尝试进入Internet选项并在安全选项卡下关闭保护模式。您可能还希望降低Internet区域的安全级别。
答案 2 :(得分:1)
我已关闭保护模式,看起来有帮助。
答案 3 :(得分:1)
如果可以自定义客户端驱动程序,那么这里是您参考的Python实现:
def open(self):
timeout = self.get_eval('this.defaultTimeout')
self.set_timeout(0)
self.do_command("open", [url,ignoreResponseCode])
self.set_timeout(timeout)
self.wait_for_page_to_load(timeout)
def wait_for_page_to_load(self,timeout):
# self.do_command("waitForPageToLoad", [timeout,])
import time
end = time.time() + int(float(timeout) / 1000)
while time.time() < end:
if self.get_eval('window.document.readyState') == 'complete': return
time.sleep(2)
raise Exception('Time out after %sms' % timeout)
我只使用DOM属性document.readyState
来确定页面是否已完全加载。
IE 9+ intermittently throws a timeout error even the page is fully loaded,了解更多详情。