psx
psx

Reputation: 4048

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

Upvotes: 3

Views: 3260

Answers (4)

Jeremy Kao
Jeremy Kao

Reputation: 943

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.

Upvotes: 1

Jakub Sacha
Jakub Sacha

Reputation: 91

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

Upvotes: 1

mtkopone
mtkopone

Reputation: 6443

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')

Upvotes: 3

hb2pencil
hb2pencil

Reputation: 892

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.

Upvotes: 3

Related Questions