Behat + selenium 2 等待页面加载
Behat + selenium 2 wait for page to load
在使用 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 秒。
我想做的是有一种通用的方法来等待上一次点击导致页面加载,而不必每次都等待大量固定时间。
我看到的所有关于等待页面加载的建议,都是指检查特定页面元素是否已加载。
然而,这些测试 运行 针对各种遗留网站,这些网站并不总是可以检查是否存在标准元素,因此我希望使用更通用的方法。
您可以使用具有 javascript 条件的等待方法,例如:
/**
* @When /^wait for the page to be loaded$/
*/
public function waitForThePageToBeLoaded()
{
$this->getSession()->wait(10000, "document.readyState === 'complete'");
}
另一个好的做法是有一个等待元素的方法,如果找到元素 returns 元素对象,否则它会抛出异常。
点击方法可以是这样的:
$this->waitForElement("css_selector")->click();
在使用 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 秒。
我想做的是有一种通用的方法来等待上一次点击导致页面加载,而不必每次都等待大量固定时间。
我看到的所有关于等待页面加载的建议,都是指检查特定页面元素是否已加载。
然而,这些测试 运行 针对各种遗留网站,这些网站并不总是可以检查是否存在标准元素,因此我希望使用更通用的方法。
您可以使用具有 javascript 条件的等待方法,例如:
/**
* @When /^wait for the page to be loaded$/
*/
public function waitForThePageToBeLoaded()
{
$this->getSession()->wait(10000, "document.readyState === 'complete'");
}
另一个好的做法是有一个等待元素的方法,如果找到元素 returns 元素对象,否则它会抛出异常。
点击方法可以是这样的:
$this->waitForElement("css_selector")->click();