Laminas
Установка
Если вы используете Codeception, установленный с помощью composer, установите этот модуль с помощью следующей команды:
composer require --dev codeception/module-laminas
В качестве альтернативы, вы можете включить Laminas модуль в файле конфигурации пакета и выполнить
codecept init upgrade4
Этот модуль был включен в Codeception 2 и 3, но с версии 4 его необходимо устанавливать отдельно.
Некоторые модули поставляются с файлами PHAR.
Предупреждение. Использование файла PHAR и composer в одном проекте может привести к непредвиденным ошибкам.
Описание
Этот модуль позволяет запускать тесты внутри проекта Laminas. По умолчанию используется файл конфигурации tests/application.config.php.
Статус
- Поддержка: Naktibalda
- Устойчивость: стабильная
Конфигурация
- config: относительный путь к файлу конфигурации (по умолчанию:
tests/application.config.php) - em_service: ‘Doctrine\ORM\EntityManager’ - используйте указанный EntityManager для сопряжения с Doctrine Module.
Открытые свойства
- application - экземпляр
\Laminas\Mvc\ApplicationInterface - db - экземпляр
\Laminas\Db\Adapter\AdapterInterface - client - клиент BrowserKit
Компоненты
- services - позволяет использовать grabServiceFromContainer и addServiceToContainer с модулями WebDriver или PhpBrowser.
Пример использования:
actor: AcceptanceTester
modules:
enabled:
- Laminas:
part: services
- Doctrine2:
depends: Laminas
- WebDriver:
url: http://your-url.com
browser: phantomjs Действия
_findElements
скрытый метод API, ожидается, что он будет использоваться классами-помощниками
Находит элемент, используя доступные типы локаторов Codeception:
- XPath
- CSS
- Строгий локатор
Используйте его в классах-помощниках, GroupObject или Extension:
<?php
$els = $this->getModule('Laminas')->_findElements('.items');
$els = $this->getModule('Laminas')->_findElements(['name' => 'username']);
$editLinks = $this->getModule('Laminas')->_findElements(['link' => 'Edit']);
// now you can iterate over $editLinks and check that all them have valid hrefs Модуль WebDriver возвращает экземпляры Facebook\WebDriver\Remote\RemoteWebElement, модули PhpBrowser и Framework возвращают экземпляры Symfony\Component\DomCrawler\Crawler
-
param$locator -
return arrayинтерактивных элементов
_getResponseContent
скрытый метод API, ожидается, что он будет использоваться классами-помощниками
Возвращает содержимое последнего ответа. Используйте его в классах-помощниках, когда вам нужно получить ответ запроса, выполненного другим модулем.
<?php
// in Helper class
public function seeResponseContains($text)
{
$this->assertStringContainsString($text, $this->getModule('Laminas')->_getResponseContent(), "response contains");
} -
return string@throws ModuleException
_loadPage
скрытый метод API, ожидается, что он будет использоваться классами-помощниками
Открывает страницу с произвольными параметрами запроса. Полезно для тестирования многоэтапных форм на определенном шаге.
<?php
// in Helper class
public function openCheckoutFormStep2($orderId) {
$this->getModule('Laminas')->_loadPage('POST', '/checkout/step2', ['order' => $orderId]);
} -
param string$method -
param string$uri -
param string$content
_request
скрытый метод API, ожидается, что он будет использоваться классами-помощниками
Отправляет пользовательский запрос на бэкенд с помощью метода, URI, параметров и т.д. Используйте его в классах-помощниках для создания специальных действий запроса, таких как доступ к API. Возвращает строку с телом ответа.
<?php
// in Helper class
public function createUserByApi($name) {
$userData = $this->getModule('Laminas')->_request('POST', '/api/v1/users', ['name' => $name]);
$user = json_decode($userData);
return $user->id;
} Не загружает ответ в модуль, поэтому вы не можете взаимодействовать со страницей ответа (нажимать, заполнять формы). Для загрузки произвольной страницы для взаимодействия используйте метод _loadPage.
-
param string$method -
param string$uri -
param string$content -
return string@throws ExternalUrlException @see_loadPage
_savePageSource
скрытый метод API, ожидается, что он будет использоваться классами-помощниками
Сохраняет исходный код страницы в файл
$this->getModule('Laminas')->_savePageSource(codecept_output_dir().'page.html'); -
param$filename
addFactoryToContainer
Добавляет фабрику в контейнер Laminas
-
param string$name -
param string|callable|FactoryInterface$factory return void-
[Part]services
addServiceToContainer
Добавляет сервис в контейнер Laminas
-
[Part]services -
param array|object$service
amHttpAuthenticated
Аутентифицирует пользователя для HTTP_AUTH
-
param string$username -
param string$password
amOnPage
Открывает страницу по заданному относительному URI.
<?php
// opens front page
$I->amOnPage('/');
// opens /register page
$I->amOnPage('/register'); -
param string$page
amOnRoute
Открывает веб-страницу с использованием имени маршрута и параметров.
<?php
$I->amOnRoute('posts.create');
$I->amOnRoute('posts.show', array('id' => 34)); attachFile
Прикрепляет файл, относительный к каталогу Codeception _data, к указанному полю загрузки файлов.
<?php
// file is stored in 'tests/_data/prices.xls'
$I->attachFile('input[@type="file"]', 'prices.xls');
?> -
param$field -
param$filename
checkOption
Отмечает флажок. Для радиокнопок используйте метод selectOption.
<?php
$I->checkOption('#agree');
?> -
param$option
click
Выполняет клик по ссылке или кнопке, заданной локатором. Если используется размытый локатор, страница будет проверена на наличие кнопки, ссылки или изображения, соответствующего строке локатора. Для кнопок проверяется атрибут «value», атрибут «name» и внутренний текст. Для ссылок проверяется текст ссылки. Для изображений проверяется атрибут «alt» и внутренний текст любых родительских ссылок.
Второй параметр — контекст (CSS- или XPath-локатор) для сужения поиска.
Обратите внимание, что если локатор соответствует кнопке типа submit, форма будет отправлена.
<?php
// simple link
$I->click('Logout');
// button of form
$I->click('Submit');
// CSS button
$I->click('#form input[type=submit]');
// XPath
$I->click('//form/*[@type="submit"]');
// link in context
$I->click('Logout', '#nav');
// using strict locator
$I->click(['link' => 'Login']);
?> -
param$link -
param$context
deleteHeader
Удаляет заголовок с указанным именем. Последующие запросы не будут содержать удаленный заголовок.
Пример:
<?php
$I->haveHttpHeader('X-Requested-With', 'Codeception');
$I->amOnPage('test-headers.php');
// ...
$I->deleteHeader('X-Requested-With');
$I->amOnPage('some-other-page.php'); -
param string$name имя заголовка для удаления.
dontSee
Проверяет, что на текущей странице отсутствует указанный текст (регистронезависимый). Укажите локатор в качестве второго параметра для поиска в определенном регионе.
<?php
$I->dontSee('Login'); // I can suppose user is already logged in
$I->dontSee('Sign Up','h1'); // I can suppose it's not a signup page
$I->dontSee('Sign Up','//body/h1'); // with XPath
$I->dontSee('Sign Up', ['css' => 'body h1']); // with strict CSS locator Обратите внимание, что поиск выполняется после удаления всех HTML-тегов из тела, поэтому $I->dontSee('strong') потерпит неудачу при строках типа:
<p>I am Stronger than thou</p><script>document.createElement('strong');</script>
Но проигнорирует строки типа:
<strong>Home</strong><div class="strong">Home</strong><!-- strong -->
Для проверки исходного кода используйте seeInSource().
-
param string$text -
param array|string$selector необязательный
dontSeeCheckboxIsChecked
Проверяет, что указанный флажок не выбран.
<?php
$I->dontSeeCheckboxIsChecked('#agree'); // I suppose user didn't agree to terms
$I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user didn't check the first checkbox in form.
?> -
param$checkbox
dontSeeCookie
Проверяет, что куки с заданным именем отсутствует. Вы можете задать дополнительные параметры куки, такие как domain, path, как массив, переданный в последнем аргументе.
-
param$cookie -
param array$params
dontSeeCurrentUrlEquals
Проверяет, что текущий URL не равен заданной строке. В отличие от dontSeeInCurrentUrl, это сопоставляет только полный URL.
<?php
// current url is not root
$I->dontSeeCurrentUrlEquals('/');
?> -
param string$uri
dontSeeCurrentUrlMatches
Проверяет, что текущий URL не соответствует заданному регулярному выражению.
<?php
// to match root url
$I->dontSeeCurrentUrlMatches('~^/users/(\d+)~');
?> -
param string$uri
dontSeeElement
Проверяет, что заданный элемент невидим или отсутствует на странице. Вы также можете указать ожидаемые атрибуты этого элемента.
<?php
$I->dontSeeElement('.error');
$I->dontSeeElement('//form/input[1]');
$I->dontSeeElement('input', ['name' => 'login']);
$I->dontSeeElement('input', ['value' => '123456']);
?> -
param$selector -
param array$attributes
dontSeeInCurrentUrl
Проверяет, что текущий URI не содержит заданную строку.
<?php
$I->dontSeeInCurrentUrl('/users/');
?> -
param string$uri
dontSeeInField
Проверяет, что поле ввода или текстовое поле не содержит заданное значение. Для размытых локаторов поле сопоставляется по тексту метки, CSS и XPath.
<?php
$I->dontSeeInField('Body','Type your comment here');
$I->dontSeeInField('form textarea[name=body]','Type your comment here');
$I->dontSeeInField('form input[type=hidden]','hidden_value');
$I->dontSeeInField('#searchform input','Search');
$I->dontSeeInField('//form/*[@name=search]','Search');
$I->dontSeeInField(['name' => 'search'], 'Search');
?> -
param$field -
param$value
dontSeeInFormFields
Проверяет, что массив параметров формы (имя => значение) не установлен в форме, соответствующей переданному селектору.
<?php
$I->dontSeeInFormFields('form[name=myform]', [
'input1' => 'non-existent value',
'input2' => 'other non-existent value',
]);
?> Чтобы проверить, что элементу не было присвоено ни одно из многих значений, можно передать массив в качестве значения:
<?php
$I->dontSeeInFormFields('.form-class', [
'fieldName' => [
'This value shouldn\'t be set',
'And this value shouldn\'t be set',
],
]);
?> Кроме того, значения флажков можно проверить с помощью булевых значений.
<?php
$I->dontSeeInFormFields('#form-id', [
'checkbox1' => true, // fails if checked
'checkbox2' => false, // fails if unchecked
]);
?> -
param$formSelector -
param$params
dontSeeInSource
Проверяет, что текущая страница содержит заданную строку в ее исходном коде.
<?php
$I->dontSeeInSource('<h1>Green eggs & ham</h1>'); -
param$raw
dontSeeInTitle
Проверяет, что заголовок страницы не содержит заданную строку.
-
param$title
dontSeeLink
Проверяет, что на странице отсутствует ссылка с заданной строкой. Если второй параметр задан, проверяются только ссылки с соответствующим атрибутом «href».
<?php
$I->dontSeeLink('Logout'); // I suppose user is not logged in
$I->dontSeeLink('Checkout now', '/store/cart.php');
?> -
param string$text -
param string$url необязательный
dontSeeOptionIsSelected
Проверяет, что заданный параметр не выбран.
<?php
$I->dontSeeOptionIsSelected('#form input[name=payment]', 'Visa');
?> -
param$selector -
param$optionText
dontSeeResponseCodeIs
Проверяет, что код ответа равен заданному значению.
<?php $I->dontSeeResponseCodeIs(200); // recommended \Codeception\Util\HttpCode $I->dontSeeResponseCodeIs(\Codeception\Util\HttpCode::OK);
-
param int$code
fillField
Заполняет текстовое поле или область ввода заданной строкой.
<?php
$I->fillField("//input[@type='text']", "Hello World!");
$I->fillField(['name' => 'email'], 'jon@example.com');
?> -
param$field -
param$value
followRedirect
Следует за ожидаемым перенаправлением, если оно есть.
<?php $I->followRedirect();
grabAttributeFrom
Извлекает значение заданного атрибута из заданного элемента. Возникает ошибка, если элемент не найден.
<?php
$I->grabAttributeFrom('#tooltip', 'title');
?> -
param$cssOrXpath -
param$attribute
grabCookie
Извлекает значение куки. Вы можете задать дополнительные параметры куки, такие как domain, path, в массиве, переданном в качестве последнего аргумента. Если куки установлены запросом ajax (XMLHttpRequest), может быть задержка со стороны браузера, попробуйте $I->wait(0.1).
-
param$cookie -
param array$params
grabFromCurrentUrl
Применяет заданное регулярное выражение к текущему URI и возвращает первую группу захвата. Если параметры не заданы, возвращается полный URI.
<?php
$user_id = $I->grabFromCurrentUrl('~^/user/(\d+)/~');
$uri = $I->grabFromCurrentUrl();
?> -
param string$uri необязательный
grabMultiple
Извлекает содержимое текста или значения атрибутов узлов, соответствующих $cssOrXpath, и возвращает их в виде массива.
<a href="#first">First</a> <a href="#second">Second</a> <a href="#third">Third</a>
<?php
// would return ['First', 'Second', 'Third']
$aLinkText = $I->grabMultiple('a');
// would return ['#first', '#second', '#third']
$aLinks = $I->grabMultiple('a', 'href');
?> -
param$cssOrXpath -
param$attribute return string[]
grabPageSource
Извлекает исходный код текущей страницы.
@throws ModuleException если страница не была открыта.
-
return stringИсходный код текущей страницы.
grabServiceFromContainer
Извлекает сервис из контейнера Laminas. Рекомендуется использовать для юнит-тестирования.
<?php
$em = $I->grabServiceFromContainer('Doctrine\ORM\EntityManager'); -
[Part]сервисы
grabTextFrom
Находит и возвращает текстовое содержимое заданного элемента. Если используется неточная локация, элемент находится с помощью CSS, XPath и по совпадению всего исходного кода страницы по регулярному выражению.
<?php
$heading = $I->grabTextFrom('h1');
$heading = $I->grabTextFrom('descendant-or-self::h1');
$value = $I->grabTextFrom('~<input value=(.*?)]~sgi'); // match with a regex
?> -
param$cssOrXPathOrRegex
grabValueFrom
-
param$field -
return array|mixed|null|string
haveHttpHeader
Устанавливает HTTP заголовок в указанное значение — используется в последующих HTTP запросах через PhpBrowser.
Пример:
<?php
$I->haveHttpHeader('X-Requested-With', 'Codeception');
$I->amOnPage('test-headers.php'); Для использования специальных символов в ключе заголовка используйте HTML сущности символов: Пример: Заголовок с нижним подчеркиванием — ‘Client_Id’ должен быть представлен как — ‘Client_Id’ или ‘Client_Id’
<?php
$I->haveHttpHeader('Client_Id', 'Codeception'); -
param string$name имя заголовка запроса -
param string$value значение, которое будет установлено для последующих запросов
haveServerParameter
Устанавливает параметр SERVER, действительный для всех последующих запросов.
$I->haveServerParameter('name', 'value'); -
param string$name -
param string$value
makeHtmlSnapshot
Используйте этот метод в интерактивной паузе, чтобы сохранить исходный код HTML текущей страницы.
<?php
$I->makeHtmlSnapshot('edit_page');
// saved to: tests/_output/debug/edit_page.html
$I->makeHtmlSnapshot();
// saved to: tests/_output/debug/2017-05-26_14-24-11_4b3403665fea6.html -
param null$name
moveBack
Переходит назад в истории.
-
param int$numberOfSteps (значение по умолчанию 1)
resetCookie
Удаляет cookie с заданным именем. Вы можете установить дополнительные параметры cookie, такие как domain, path в массиве, переданном в качестве последнего аргумента.
-
param$cookie -
param array$params
see
Проверяет, содержит ли текущая страница заданную строку (без учета регистра).
Вы можете указать конкретный HTML-элемент (через CSS или XPath) как второй параметр, чтобы искать только в этом элементе.
<?php
$I->see('Logout'); // I can suppose user is logged in
$I->see('Sign Up', 'h1'); // I can suppose it's a signup page
$I->see('Sign Up', '//body/h1'); // with XPath
$I->see('Sign Up', ['css' => 'body h1']); // with strict CSS locator Обратите внимание, что поиск выполняется после удаления всех HTML-тегов из тела, поэтому $I->see('strong') вернёт true для строк типа:
<p>I am Stronger than thou</p><script>document.createElement('strong');</script>
Но не будет true для строк типа:
<strong>Home</strong><div class="strong">Home</strong><!-- strong -->
Для проверки исходного кода используйте seeInSource().
-
param string$text -
param array|string$selector необязательно
seeCheckboxIsChecked
Проверяет, что указанный чекбокс отмечен.
<?php
$I->seeCheckboxIsChecked('#agree'); // I suppose user agreed to terms
$I->seeCheckboxIsChecked('#signup_form input[type=checkbox]'); // I suppose user agreed to terms, If there is only one checkbox in form.
$I->seeCheckboxIsChecked('//form/input[@type=checkbox and @name=agree]');
?> -
param$checkbox
seeCookie
Проверяет, установлен ли cookie с заданным именем. Вы можете установить дополнительные параметры cookie, такие как domain, path в виде массива, переданного в качестве последнего аргумента.
<?php
$I->seeCookie('PHPSESSID');
?> -
param$cookie -
param array$params
seeCurrentRouteIs
Проверяет, что текущий URL соответствует маршруту.
<?php
$I->seeCurrentRouteIs('posts.index');
$I->seeCurrentRouteIs('posts.show', ['id' => 8])); seeCurrentUrlEquals
Проверяет, что текущий URL равен заданной строке. В отличие от seeInCurrentUrl, это совпадение соответствует только полному URL.
<?php
// to match root url
$I->seeCurrentUrlEquals('/');
?> -
param string$uri
seeCurrentUrlMatches
Проверяет, что текущий URL соответствует заданному регулярному выражению.
<?php
// to match root url
$I->seeCurrentUrlMatches('~^/users/(\d+)~');
?> -
param string$uri
seeElement
Проверяет, что заданный элемент существует на странице и виден. Вы также можете указать ожидаемые атрибуты этого элемента.
<?php
$I->seeElement('.error');
$I->seeElement('//form/input[1]');
$I->seeElement('input', ['name' => 'login']);
$I->seeElement('input', ['value' => '123456']);
// strict locator in first arg, attributes in second
$I->seeElement(['css' => 'form input'], ['name' => 'login']);
?> -
param$selector -
param array$attributes
seeInCurrentUrl
Проверяет, что текущий URI содержит заданную строку.
<?php
// to match: /home/dashboard
$I->seeInCurrentUrl('home');
// to match: /users/1
$I->seeInCurrentUrl('/users/');
?> -
param string$uri
seeInField
Проверяет, что заданное поле ввода или текстовое поле равно (т.е. не просто содержит) заданное значение. Поля сопоставляются по текстовой метке, атрибуту «name», CSS или XPath.
<?php
$I->seeInField('Body','Type your comment here');
$I->seeInField('form textarea[name=body]','Type your comment here');
$I->seeInField('form input[type=hidden]','hidden_value');
$I->seeInField('#searchform input','Search');
$I->seeInField('//form/*[@name=search]','Search');
$I->seeInField(['name' => 'search'], 'Search');
?> -
param$field -
param$value
seeInFormFields
Проверяет, что массив параметров формы (имя => значение) установлен в форме, соответствующей переданному селектору.
<?php
$I->seeInFormFields('form[name=myform]', [
'input1' => 'value',
'input2' => 'other value',
]);
?> Для элементов множественного выбора или для проверки значений нескольких элементов с одинаковым именем можно передать массив:
<?php
$I->seeInFormFields('.form-class', [
'multiselect' => [
'value1',
'value2',
],
'checkbox[]' => [
'a checked value',
'another checked value',
],
]);
?> Кроме того, значения чекбоксов можно проверить с помощью булевых значений.
<?php
$I->seeInFormFields('#form-id', [
'checkbox1' => true, // passes if checked
'checkbox2' => false, // passes if unchecked
]);
?> Сочетайте с submitForm для быстрого тестирования.
<?php
$form = [
'field1' => 'value',
'field2' => 'another value',
'checkbox1' => true,
// ...
];
$I->submitForm('//form[@id=my-form]', $form, 'submitButton');
// $I->amOnPage('/path/to/form-page') may be needed
$I->seeInFormFields('//form[@id=my-form]', $form);
?> -
param$formSelector -
param$params
seeInSource
Проверяет, содержит ли текущая страница заданную строку в исходном коде.
<?php
$I->seeInSource('<h1>Green eggs & ham</h1>'); -
param$raw
seeInTitle
Проверяет, что заголовок страницы содержит заданную строку.
<?php
$I->seeInTitle('Blog - Post #1');
?> -
param$title
seeLink
Проверяет, есть ли ссылка с указанным текстом. Для сопоставления ссылок с точным URL укажите полный URL в качестве второго параметра.
<?php
$I->seeLink('Logout'); // matches <a href="#">Logout</a>
$I->seeLink('Logout','/logout'); // matches <a href="/logout">Logout</a>
?> -
param string$text -
param string$url необязательно
seeNumberOfElements
Проверяет, что на странице есть определенное количество элементов, соответствующих заданной локатору.
<?php
$I->seeNumberOfElements('tr', 10);
$I->seeNumberOfElements('tr', [0,10]); // between 0 and 10 elements
?> -
param$selector -
param mixed$expected int или int[]
seeOptionIsSelected
Проверяет, что указанный параметр выбран.
<?php
$I->seeOptionIsSelected('#form input[name=payment]', 'Visa');
?> -
param$selector -
param$optionText
seePageNotFound
Утверждает, что текущая страница имеет код ответа 404.
seeResponseCodeIs
Проверяет, что код ответа равен предоставленному значению.
<?php $I->seeResponseCodeIs(200); // recommended \Codeception\Util\HttpCode $I->seeResponseCodeIs(\Codeception\Util\HttpCode::OK);
-
param int$code
seeResponseCodeIsBetween
Проверяет, что код ответа находится в определенном диапазоне. Между фактически означает [от <= CODE <= до]
-
param int$from -
param int$to
seeResponseCodeIsClientError
Проверяет, что код ответа — 4xx
seeResponseCodeIsRedirection
Проверяет, что код ответа — 3xx
seeResponseCodeIsServerError
Проверяет, что код ответа — 5xx
seeResponseCodeIsSuccessful
Проверяет, что код ответа — 2xx
selectOption
Выбирает параметр в теге select или в группе радиокнопок.
<?php
$I->selectOption('form select[name=account]', 'Premium');
$I->selectOption('form input[name=payment]', 'Monthly');
$I->selectOption('//form/select[@name=account]', 'Monthly');
?> Передайте массив во второй аргумент, чтобы выбрать несколько параметров:
<?php
$I->selectOption('Which OS do you use?', array('Windows','Linux'));
?> Или передайте ассоциативный массив во второй аргумент, чтобы указать, какой метод выбора следует использовать:
<?php
$I->selectOption('Which OS do you use?', array('text' => 'Windows')); // Only search by text 'Windows'
$I->selectOption('Which OS do you use?', array('value' => 'windows')); // Only search by value 'windows'
?> -
param$select -
param$option
sendAjaxGetRequest
Отправляет AJAX GET-запрос с указанными параметрами. См. sendAjaxPostRequest()
-
param$uri -
param$params
sendAjaxPostRequest
Отправляет AJAX POST-запрос с указанными параметрами. Соответствующий HTTP-заголовок добавляется автоматически: X-Requested-With: XMLHttpRequest Пример:
<?php
$I->sendAjaxPostRequest('/add-task', ['task' => 'lorem ipsum']); Некоторые фреймворки (например, Symfony) создают имена полей в форме «массива»: <input type="text" name="form[task]"> В этом случае вам нужно передать поля следующим образом:
<?php
$I->sendAjaxPostRequest('/add-task', ['form' => [
'task' => 'lorem ipsum',
'category' => 'miscellaneous',
]]); -
param string$uri -
param array$params
sendAjaxRequest
Отправляет AJAX-запрос, используя указанный HTTP-метод. См. sendAjaxPostRequest() Пример:
<?php
$I->sendAjaxRequest('PUT', '/posts/7', ['title' => 'new title']); -
param$method -
param$uri -
param array$params
setCookie
Устанавливает cookie с заданным именем и значением. Вы можете установить дополнительные параметры cookie, такие как domain, path, expires, secure в массиве, переданном в качестве последнего аргумента.
<?php
$I->setCookie('PHPSESSID', 'el4ukv0kqbvoirg7nkp4dncpk3');
?> -
param$name -
param$val -
param array$params
setMaxRedirects
Устанавливает максимальное количество редиректов, которые может следовать клиент.
<?php $I->setMaxRedirects(2);
-
param int$maxRedirects
setServerParameters
Устанавливает параметры SERVER, действительные для всех последующих запросов. Это удалит старые.
$I->setServerParameters([]);
startFollowingRedirects
Включает автоматическое следование редиректам клиентом.
<?php $I->startFollowingRedirects();
stopFollowingRedirects
Препятствует автоматическому слежению за редиректами клиентом.
<?php $I->stopFollowingRedirects();
submitForm
Отправляет заданную форму на странице с заданными значениями формы. Передайте значения полей формы в виде массива во втором параметре.
Хотя эта функция может быть использована в качестве короткого варианта fillField(), selectOption(), click() и т. д., у неё есть некоторые важные отличия:
- Используются только имена полей, а не CSS/XPath селекторы или метки полей
- Если в эту функцию отправляется поле, которого нет на странице, оно будет безмолвно добавлено в HTTP-запрос. Это полезно для тестирования некоторых типов форм, но имейте в виду, что вы не получите исключение, как если бы вы вызвали
fillField()илиselectOption()с отсутствующим полем.
Поля, которые не указаны, будут заполнены их значениями со страницы или из предыдущих вызовов fillField(), selectOption() и т. д. Вам не нужно нажимать кнопку «Отправить» после этого. Эта команда сама инициирует запрос к действию формы.
Вы можете указать значение кнопки, которое нужно включить в запрос, с помощью последнего параметра (как альтернатива явным установлению его значения во втором параметре), так как значения кнопок иначе не включаются в запрос.
Примеры:
<?php
$I->submitForm('#login', [
'login' => 'davert',
'password' => '123456'
]);
// or
$I->submitForm('#login', [
'login' => 'davert',
'password' => '123456'
], 'submitButtonName'); Например, представьте форму «Регистрация»:
<form id="userForm">
Login:
<input type="text" name="user[login]" /><br/>
Password:
<input type="password" name="user[password]" /><br/>
Do you agree to our terms?
<input type="checkbox" name="user[agree]" /><br/>
Subscribe to our newsletter?
<input type="checkbox" name="user[newsletter]" value="1" checked="checked" /><br/>
Select pricing plan:
<select name="plan">
<option value="1">Free</option>
<option value="2" selected="selected">Paid</option>
</select>
<input type="submit" name="submitButton" value="Submit" />
</form> Вы можете отправить её следующим образом:
<?php
$I->submitForm(
'#userForm',
[
'user' => [
'login' => 'Davert',
'password' => '123456',
'agree' => true
]
],
'submitButton'
); Обратите внимание, что значение «2» будет отправлено для поля «план», так как это выбранный вариант.
Чтобы снять отметку с предварительно отмеченного чекбокса «рассылка», вызовите $I->uncheckOption(['name' => 'user[newsletter]']); перед отправкой формы, как показано здесь (т. е. без поля «рассылка» в массиве $params).
Вы также можете эмулировать отправку с помощью JavaScript, не указывая какие-либо кнопки в третьем параметре submitForm.
<?php
$I->submitForm(
'#userForm',
[
'user' => [
'login' => 'Davert',
'password' => '123456',
'agree' => true
]
]
); Эта функция хорошо работает в паре с seeInFormFields() для быстрого тестирования интерфейсов CRUD и логики проверки форм.
<?php
$form = [
'field1' => 'value',
'field2' => 'another value',
'checkbox1' => true,
// ...
];
$I->submitForm('#my-form', $form, 'submitButton');
// $I->amOnPage('/path/to/form-page') may be needed
$I->seeInFormFields('#my-form', $form); Значения параметров могут быть установлены в массивы для нескольких входных полей с одинаковым именем или для многовыборных выпадающих списков. Для чекбоксов вы можете использовать либо строковое значение, либо булево true/false, которое будет заменено значением чекбокса в DOM.
<?php
$I->submitForm('#my-form', [
'field1' => 'value',
'checkbox' => [
'value of first checkbox',
'value of second checkbox',
],
'otherCheckboxes' => [
true,
false,
false
],
'multiselect' => [
'first option value',
'second option value'
]
]); Смешивание строковых и булевых значений для значения чекбокса не поддерживается и может привести к непредсказуемым результатам.
Имена полей, заканчивающиеся на [], должны передаваться без заключительных квадратных скобок и содержать массив в качестве значения. Это позволяет отправлять несколько значений с одинаковым именем, рассмотрите:
<?php
// This will NOT work correctly
$I->submitForm('#my-form', [
'field[]' => 'value',
'field[]' => 'another value', // 'field[]' is already a defined key
]); Решение заключается в передаче массива значений:
<?php
// This way both values are submitted
$I->submitForm('#my-form', [
'field' => [
'value',
'another value',
]
]); -
param$selector -
param$params -
param$button
switchToIframe
Переключается на iframe или фрейм на странице.
Пример:
<iframe name="another_frame" src="http://example.com">
<?php
# switch to iframe
$I->switchToIframe("another_frame"); -
param string$name
uncheckOption
Снимает отметку с чекбокса.
<?php
$I->uncheckOption('#notify');
?> -
param$option
© 2011 Michael Bodnarchuk and contributors
Licensed under the MIT License.
https://codeception.com/docs/modules/ZF2