Behat + селен 2 ждут загрузки страницы
Есть ли способ надежно ждать загрузки страниц при использовании Behat с Mink с использованием Selenium2Driver?
Я унаследовал некоторые устаревшие тесты, которые ждут так:
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 ответ
Вы можете использовать метод ожидания с условием 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();