开发者

Selenium test in Internet Explorer always times out?

I'm trying to run a basic test in Internet Explorer via Selenium-RC/PHPUnit, and it开发者_Go百科 always returns with

# 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
#

The last command in command history is waitForPageToLoad(30000). The same test runs fine and completes in firefox. How can I get this test to run and complete in internet explorer?

Thanks


There's an open bug in selenium that causes waitForPageToLoad to sometimes timeout on IE.

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

It's marked as occurring on IE6, but I'm experiencing the same error in at least IE9.

A workaround is to wait for e.g. a specific DOM-element on the page that is loading instead of using waitForPageToLoad. For example: waitForVisible('css=#header')


Try going into Internet Options and turn off Protected mode under the security tab. You may also want to decrease the security level for the Internet zone.


I've turned off protected mode and looks like it helped.


If it is acceptable to customize the client driver, here is the Python implementation for your refernece:

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)

I just use DOM attribute document.readyState to determine if the page is fully loaded.

IE 9+ intermittently throws a timeout error even the page is fully loaded, for more details.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜