在Internet Explorer中使用Selenium测试总是超时?

3

我正尝试通过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)。同样的测试在火狐浏览器中运行良好并完成了。我该如何让这个测试在Internet Explorer中运行并完成呢?

谢谢。


我们能看一下你的测试是什么样子吗? - AutomatedTester
如果您使用的是IE7及其以上版本的Vista,尝试将该网站添加到受信任的网站列表中。 - Sergii Pozharov
4个回答

3
尝试进入“Internet选项”并在安全选项卡下关闭受保护模式。您还可以降低互联网区域的安全级别。

由于我提出这个问题后被分配了另一个任务,所以我还没有尝试过这个。等我尝试后会进行更新。谢谢。 - psx

3

Selenium中存在一个问题,会导致在IE浏览器上waitForPageToLoad有时会超时。

http://jira.openqa.org/browse/SRC-552

该问题标记为只发生在IE6上,但是我在至少IE9上也遇到了同样的错误。

解决方法是等待页面上正在加载的特定DOM元素,而不是使用waitForPageToLoad。例如:waitForVisible('css=#header')


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来确定页面是否完全加载。
有关更多详细信息,请参见{{link1:IE 9+即使页面已完全加载也会间歇性地引发超时错误}}。

1

我已经关闭了受保护模式,看起来有帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接