2016-07-05 2 views
3

Есть ли способ надежно дождаться загрузки страниц при использовании Behat with Mink с помощью Selenium2Driver?Behat + selenium 2 wait to page to

Я унаследовал некоторые устаревшие тесты, которые ждут, как это:

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" 

т.е. только этот один тест занимает 1minute 30секунд.

То, что я хотел бы сделать, это иметь общий способ ожидания предыдущего щелчка, что приведет к загрузке страницы, без необходимости ждать большого фиксированного количества времени каждый раз.

Все предложения, которые я вижу в ожидании загрузки страницы, относятся ко всей проверке того, что загружен определенный элемент страницы.

Однако эти тесты протекают против множества устаревших сайтов, где не всегда есть стандартный элемент, который можно проверить, чтобы присутствовать, поэтому я надеюсь использовать более общий метод.

ответ

4

Вы можете использовать метод ожидания с javasccript условия как:

/** 
* @When /^wait for the page to be loaded$/ 
*/ 
public function waitForThePageToBeLoaded() 
{ 
    $this->getSession()->wait(10000, "document.readyState === 'complete'"); 
} 

Еще одна хорошая практика, чтобы иметь метод, который ожидает элемента, если элемент найден возвращает элемент объекта иначе он будет сгенерировано исключение ,

Для метода мыши вы можете иметь что-то вроде этого:

$this->waitForElement("css_selector")->click();