Поведение — элемент контрольного списка содержит содержимое

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

Функция, которую я создал в своем 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(), но безуспешно. Любые идеи? (бонусные баллы за то, что помогли мне со вторым этапом моих требований)


person Valentin    schedule 02.06.2016    source источник


Ответы (1)


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

    $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;
    }

Может ли кто-нибудь проверить код?

person Valentin    schedule 02.06.2016
comment
Используйте $element !== null вместо пустого. Также обратите внимание, что метод find вернет null или объект. Если элемент не найден, и вы будете использовать getText для null, это приведет к фатальной ошибке php. Проверьте, не является ли элемент нулевым, затем используйте исключение getText els throw. - person lauda; 07.06.2016