Behat + selenium 2等待页面加载

Dan*_*ack 5 selenium behat mink selenium-webdriver

使用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"
Run Code Online (Sandbox Code Playgroud)

即只需要这个单一测试需要1分30秒.

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

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

然而,这些测试针对各种遗留网站运行,其中并不总是存在可以检查存在的标准元素,因此我希望使用更通用的方法.

lau*_*uda 7

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

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

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

对于click方法,您可以使用以下内容:

$this->waitForElement("css_selector")->click();
Run Code Online (Sandbox Code Playgroud)