Behat + selenium 2等待页面加载

时间:2016-07-05 09:49:59

标签: selenium selenium-webdriver behat mink

使用Selenium2Driver使用Behat和Mink时,有没有办法可靠地等待页面加载?

我继承了一些等待的传统测试:

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

我想要做的是有一种通用的方法来等待上一次点击导致页面加载,而不必每次都等待很长的固定时间。

我可以看到等待页面加载的所有建议,都是指检查是否加载了特定的页面元素。

然而,这些测试是针对各种遗留网站运行的,这些网站并不总是可以检查出来的标准元素,所以我希望使用更通用的方法。

1 个答案:

答案 0 :(得分:5)

您可以使用javasccript条件的wait方法,如:

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

另一个好习惯是有一个等待元素的方法,如果找到元素则返回元素对象,否则它会抛出异常。

对于click方法,你可以这样:

$this->waitForElement("css_selector")->click();