使用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秒。
我想要做的是有一种通用的方法来等待上一次点击导致页面加载,而不必每次都等待很长的固定时间。
我可以看到等待页面加载的所有建议,都是指检查是否加载了特定的页面元素。
然而,这些测试是针对各种遗留网站运行的,这些网站并不总是可以检查出来的标准元素,所以我希望使用更通用的方法。
答案 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();