2016-06-02 6 views
0

У меня есть раскрывающееся меню, содержащее элементы списка, которые иногда статичны и иногда меняются. Моя главная цель - проверить, что меню содержит некоторый контент [после чего выводится этот контент и экспортируется в отчет].Behat - элемент контрольного списка содержит контент

Функция я создал в моем FeatureContext.php выглядит следующим образом:

/** 
* @Then /^I check content exists for element "([^"]*)"$/ 
*/ 
public function iCheckElementContent($locator) 
{ 

    //check element exists on page 
    $element=$this->assertSession()->elementExists('css', $locator); 

    //check element content is not empty (returns exception if true) 
    if (empty($this->getPage()->find('css', $locator)->getText())) { 
     throw new Exception; 
    } 
} 

Как вы можете заметить, он основан на ответе на другой вопрос относительно этой функции. Моя проблема, однако, в том, что это не похоже на параметр getPage(). Ошибка, которую я получаю:

PHP Fatal error: Uncaught Error: Call to undefined method FeatureContext::getPage() 

Я также попытался сменить его на getValue() без каких-либо успехов. Есть идеи? (бонусные потрясающие очки за то, что помогли мне также со вторым шагом моих требований)

ответ

0

Я думаю, что нашел решение, но я не уверен, что он проходит, потому что он работает или потому, что он ничего не ищет и не находит.

$session = $this->getSession(); 
    $element = $session->getPage()->find('css', $locator); 

    //check element content is not empty (returns exception if true) 
    if (empty ($element->getText())) { 
     throw new Exception; 
    } 

Может кто-то прокомментировать это?

+0

Использовать $ element! == null вместо пустого. Также обратите внимание, что метод find возвращает null или объект. Если элемент не найден, и вы используете getText на null, это приведет к фатальной ошибке php. Убедитесь, что элемент не равен нулю, а затем используйте getText els throw exception. – lauda

 Смежные вопросы

  • Нет связанных вопросов^_^