как получить текущий url-адрес из теста codeception & phantomjs?

Я создаю продукт в estore с моим тестом и должен получить url после отправки формы.

можно ли получить url в области тестирования после кнопки отправки ?

$I->click('#formSubmit');
$I->wait(5); // wait for redirect to new url
$url = $I->someFunctionToGetCurrentUrl()`

Я запускаю этот тест с консоли, а не из веб-браузера, поэтому у меня нет доступа к $_SERVER, который находится на стороне сервера.

но если у меня есть некоторые методы, такие как $I->canSeeCurrentUrlEquals() в рамках codeception, тогда я должен каким-то образом получить доступ к текущему url-адрес...

как это сделать?

2 ответов


решением было добавить вспомогательный метод для AcceptanceHelper в _support / AcceptanceHelper.файл php:

    class AcceptanceHelper extends \Codeception\Module
    {

        /**
         * Get current url from WebDriver
         * @return mixed
         * @throws \Codeception\Exception\ModuleException
         */
        public function getCurrentUrl()
        {
            return $this->getModule('WebDriver')->_getCurrentUri();
        }

    }

а затем использовать его в тесте:

$url = $I->getCurrentUrl();

Если у вас нет класса AcceptanceHelper/FunctionalHelper (и поэтому $this - >getModule или $this - >client не определены) , то в вашем классе AcceptanceTester/FunctionalTester должно работать следующее:

public function getCurrentUrl() {
    return $this->executeJS("return location.href");
}