2010-07-30 45 views
3

我試圖通過Selenium-RC/PHPUnit的運行在Internet Explorer中一個基本的測試,它總是與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. 

[email protected] C:\xampp 
# 

返回命令歷史記錄的最後一個命令是waitForPageToLoad(30000)。相同的測試運行良好,並在Firefox中完成。我怎樣才能讓這個測試在Internet Explorer中運行和完成?

謝謝

+0

我們可以看看你的測試是什麼樣子嗎? – AutomatedTester 2010-08-02 07:25:30

+0

如果您在Vista上使用IE7或更高版本,請嘗試將測試下的網站添加到受信任的網站上 – 2010-08-02 13:21:25

回答

3

硒中有一個開放的錯誤,導致waitForPageToLoad有時在IE上超時。

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

它標記爲IE6上發生,但我遇到了同樣的錯誤至少在IE9。

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

1

嘗試進入Internet選項並關閉安全選項卡下的保護模式。您可能還想要降低Internet區域的安全級別。

+0

尚未有機會嘗試此操作,因爲我已經提供了另一個任務,因爲我問了這個問題。當我嘗試過時會更新。謝謝 – psynnott 2010-08-20 19:55:41

1

我已關閉保護模式,看起來像它的幫助。

1

如果可以接受定製客戶端驅動程序,這裏是你的refernece 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,瞭解更多詳情。

相關問題