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();
Другие вопросы по тегам