Internet Explorer中的Selenium测试总是超时?

时间:2010-07-30 14:38:42

标签: selenium selenium-rc

我正在尝试通过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中运行和完成此测试?

由于

4 个答案:

答案 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,了解更多详情。