I am creating product in estore with my test, and need to get url after submitting a form.
Is it possible to get url in the test scope after submitting button ?
$I->click('#formSubmit');
$I->wait(5); // wait for redirect to new url
$url = $I->someFunctionToGetCurrentUrl()`
I am running this test from console, not from the web browser, so I don't have access to $_SERVER that is on the server's side.
But if I have some methods like $I->canSeeCurrentUrlEquals()
in codeception framework then i should somehow be able to access current url...
how to do it?
You can use CodeCeption's PhpBrowser function grabFromCurrentUrl()
to get the current URL.
https://codeception.com/docs/modules/PhpBrowser#grabFromCurrentUrl
This function accepts regex to return a specific portion of the current URL, however also...
If no parameters are provided, the full URI is returned.
So, use it like this
$uri = $I->grabFromCurrentUrl();
If you don't have an AcceptanceHelper/FunctionalHelper class (and so $this->getModule or $this->client are undefined) then the following in your AcceptanceTester/FunctionalTester class should work:
public function getCurrentUrl() {
return $this->executeJS("return location.href");
}
The solution was to add a helper method to AcceptanceHelper in _support/AcceptanceHelper.php file:
class AcceptanceHelper extends \Codeception\Module
{
/**
* Get current url from WebDriver
* @return mixed
* @throws \Codeception\Exception\ModuleException
*/
public function getCurrentUrl()
{
return $this->getModule('WebDriver')->_getCurrentUri();
}
}
and then use it in test:
$url = $I->getCurrentUrl();
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With