如何从 codeception 和 phantomjs 测试中获取当前 url?
how to get current url from codeception & phantomjs test?
我正在用我的测试在 estore 中创建产品,并且需要在提交表单后得到 url。
是否可以在提交按钮后得到url测试范围?
$I->click('#formSubmit');
$I->wait(5); // wait for redirect to new url
$url = $I->someFunctionToGetCurrentUrl()`
我是 运行 这个测试来自控制台,而不是来自网络浏览器,所以我无法访问服务器端的 $_SERVER。
但是如果我在 codeception 框架中有一些像 $I->canSeeCurrentUrlEquals()
这样的方法,那么我应该能够以某种方式访问当前的 url...
怎么做?
解决方案是在 _support/AcceptanceHelper.php 文件中向 AcceptanceHelper 添加辅助方法:
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 class(因此 $this->getModule 或 $this->client 未定义),那么您的 AcceptanceTester/FunctionalTester class 应该有效:
public function getCurrentUrl() {
return $this->executeJS("return location.href");
}
您可以使用 CodeCeption 的 PhpBrowser 函数 grabFromCurrentUrl()
获取当前 URL。
https://codeception.com/docs/modules/PhpBrowser#grabFromCurrentUrl
此函数接受 return 当前 URL 的特定部分的正则表达式,但也...
If no parameters are provided, the full URI is returned.
所以,像这样使用它
$uri = $I->grabFromCurrentUrl();
我正在用我的测试在 estore 中创建产品,并且需要在提交表单后得到 url。
是否可以在提交按钮后得到url测试范围?
$I->click('#formSubmit');
$I->wait(5); // wait for redirect to new url
$url = $I->someFunctionToGetCurrentUrl()`
我是 运行 这个测试来自控制台,而不是来自网络浏览器,所以我无法访问服务器端的 $_SERVER。
但是如果我在 codeception 框架中有一些像 $I->canSeeCurrentUrlEquals()
这样的方法,那么我应该能够以某种方式访问当前的 url...
怎么做?
解决方案是在 _support/AcceptanceHelper.php 文件中向 AcceptanceHelper 添加辅助方法:
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 class(因此 $this->getModule 或 $this->client 未定义),那么您的 AcceptanceTester/FunctionalTester class 应该有效:
public function getCurrentUrl() {
return $this->executeJS("return location.href");
}
您可以使用 CodeCeption 的 PhpBrowser 函数 grabFromCurrentUrl()
获取当前 URL。
https://codeception.com/docs/modules/PhpBrowser#grabFromCurrentUrl
此函数接受 return 当前 URL 的特定部分的正则表达式,但也...
If no parameters are provided, the full URI is returned.
所以,像这样使用它
$uri = $I->grabFromCurrentUrl();