2016-07-05 81 views
3

使用Selenium2Driver在使用Beek和Mink時,有沒有辦法可靠地等待頁面加載?Behat + selenium 2等待頁面加載

我繼承了一些舊的測試,等待這樣的:

Background: 
    Given I am on "http://test.example.com" 
    And I wait for "20000" 
    Given I click on the element with css selector ".button1" 
    And I wait for "30000" 
    Given I click on the element with css selector ".button2" 
    And I wait for "30000" 
    Given I click on the element with css selector ".button1" 
    And I wait for "10000" 

即只是這一次測試需要1分鐘30秒。

我想要做的是有一個等待前一次點擊導致頁面加載的通用方式,無需每次都等待大量的固定時間。

我可以看到等待頁面加載的所有建議,都指的是檢查是否加載了特定的頁面元素。

然而,這些測試針對各種遺留網站運行,其中並不總是可以檢查出現的標準元素,所以我希望使用更通用的方法。

回答

4

您可以使用wait方法與像javasccript條件:

/** 
* @When /^wait for the page to be loaded$/ 
*/ 
public function waitForThePageToBeLoaded() 
{ 
    $this->getSession()->wait(10000, "document.readyState === 'complete'"); 
} 

另一種很好的做法是有一個等待元素的方法,如果元素被發現的元素返回對象否則它會拋出一個異常。

對於點擊方法,你可以有這樣的事情:

$this->waitForElement("css_selector")->click(); 
相關問題