使用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秒。
我想做的是有一种通用的方式来等待上一次单击以导致页面加载,而不必每次都等待大量固定的时间。
我可以看到等待页面加载的所有建议,都涉及检查是否已加载特定页面元素。
但是,这些测试是针对各种传统网站运行的,这些网站中并不总是可以检查是否存在标准元素,因此我希望使用一种更通用的方法。
您可以将等待方法与javasccript条件一起使用,例如:
/** * @When /^wait for the page to be loaded$/ */ public function waitForThePageToBeLoaded() { $this->getSession()->wait(10000, "document.readyState === 'complete'"); }
另一个好的做法是有一个等待元素的方法,如果找到元素则返回元素对象,否则它将引发异常。
对于click方法,您可以具有以下内容:
$this->waitForElement("css_selector")->click();