Codeception Webdriver: захват значения href ссылки

Я пытаюсь использовать Codeception (приемочное тестирование с помощью webdriver/selenium) для тестирования своего приложения и хотел бы получить значение ссылки после выполнения действия.

В основном я хочу выйти из системы, а затем щелкнуть ссылку, поэтому мне нужно сохранить URL-адрес в переменной для использования после выхода из системы.

Это своего рода операция CMS:

  1. Войти как администратор
  2. Создать контент
  3. Контент создан и ссылка отображается пользователю

Я хочу иметь возможность тогда

  1. Возьмите значение href ссылки
  2. Выйти
  3. Перейдите по URL-адресу и проверьте содержимое определенной страницы.

person Mcg1978    schedule 21.03.2014    source источник


Ответы (1)


Codeception не имеет метода захвата href ссылки, потому что это слишком особый случай, но вы можете определить свое собственное действие в классе WebHelper для захвата href с помощью Mink API. Узнайте больше о модулях и помощниках.

Вот пример действия, которое захватывает href ссылки:

public function grabHref($locator)
{
    $webDriver = $this->getModule('Selenium2');

    $link = $webDriver->session->getPage()->findLink($locator);
    if ($link) {
        return $link->getAttribute('href');
    }

    $this->fail("Link '{$locator}' not found");           
}

Поместите эту функцию в файл _helpers/WebHelper.php, затем включите модуль WebHelper в конфигурации вашего тестового костюма:

class_name: WebGuy
    modules:
        enabled: [Selenium2, WebHelper] 

Затем запустите codecept build, чтобы перестроить свой класс WebGuy.

Теперь вы можете использовать действие захвата Href в файлах cept/cest:

$I = new WebGuy($scenario);
$I->wantTo('Grab Href');

$I->amOnPage('/');

$href = $I->grabHref('Link text or ID or Title');
person Alexander Kuntashov    schedule 31.03.2014