Behat/Mink Невозможно имитировать нажатие кнопки в нижнем колонтитуле

Попытки использовать регулярное выражение «Затем я нажимаю» (для кнопок) или «Затем я следую» (для ссылок) для элементов в нижнем колонтитуле завершаются ошибкой «элемент/ссылка с идентификатором | ссылка | имя не найдено..» Как Например, я обнаружил эту аномалию на общедоступном сайте: сайт earthdata.nasa.gov (наш сайт еще не активен). Кнопка с надписью «обратная связь» в левой части экрана не активна (sic).

Я запускаю тест на сервере selenium 2.29.0. Как мне расширить Mink, чтобы он мог находить и «нажимать» на ссылку, такую ​​​​как кнопка «Обратная связь», упомянутая выше?


person Ian Jenkins    schedule 03.03.2013    source источник
comment
Какой у Вас вопрос? Что вы пробовали? Где твой код? Кроме того, кнопка обратной связи на сайте НАСА отлично работает для меня в google-chrome.   -  person Danny Beckett    schedule 03.03.2013


Ответы (1)


Вместо того, чтобы использовать идентификатор, чтобы щелкнуть ссылку, вы можете использовать XPath, чтобы щелкнуть ссылку. XPath — это универсальный способ идентификации объектов в DOM, поэтому он всегда будет работать.

Для тех, кто не использовал Behat, используйте эту ссылку, чтобы узнать больше. По сути, это оболочка инструментов Selenium.

http://mink.behat.org/

И используйте это для доступа к сайту тестирования веб-автоматизации Selenium:

http://docs.seleniumhq.org/download/

ИЗМЕНИТЬ:

Иан: Благодаря указателю МакГайвера ВОТ РЕШЕНИЕ:

/** Click on the element with the provided xpath query
 *
 * @When /^I click on the element with xpath "([^"]*)"$/
 */
public function iClickOnTheElementWithXPath($xpath)
{
    $session = $this->getSession(); // get the mink session
    $element = $session->getPage()->find(
        'xpath',
        $session->getSelectorsHandler()->selectorToXpath('xpath', $xpath)
    ); // runs the actual query and returns the element

    // errors must not pass silently
    if (null === $element) {
        throw new \InvalidArgumentException(sprintf('Could not evaluate XPath: "%s"', $xpath));
    }

    // ok, let's click on it
    $element->click();

}
person MacGyver    schedule 03.03.2013
comment
спасибо за указатель. Вот пример реализации, вставленный выше. - person Ian Jenkins; 05.03.2013