Php 如何从codeception&;获取当前url;幻影测试?
我正在用我的测试在estore中创建产品,提交表单后需要获取url 提交按钮后是否可以在测试范围内获取urlPhp 如何从codeception&;获取当前url;幻影测试?,php,phantomjs,codeception,Php,Phantomjs,Codeception,我正在用我的测试在estore中创建产品,提交表单后需要获取url 提交按钮后是否可以在测试范围内获取url $I->click('#formSubmit'); $I->wait(5); // wait for redirect to new url $url = $I->someFunctionToGetCurrentUrl()` 我是从控制台运行此测试,而不是从web浏览器,因此我无法访问服务器端的$\u服务器 但是如果我在codeception框架中有一些方法,比如$I
$I->click('#formSubmit');
$I->wait(5); // wait for redirect to new url
$url = $I->someFunctionToGetCurrentUrl()`
我是从控制台运行此测试,而不是从web浏览器,因此我无法访问服务器端的$\u服务器 但是如果我在codeception框架中有一些方法,比如
$I->canSeeCurrentUrlEquals()
,那么我应该能够以某种方式访问当前的url
怎么做 解决方案是在_support/AcceptanceHelper.php文件中的AcceptanceHelper中添加一个helper方法:
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");
}
您可以使用CodeCeption的PhpBrowser函数
grabFromCurrentUrl()
获取当前URL
此函数接受正则表达式以返回当前URL的特定部分,但也
如果未提供任何参数,则返回完整的URI
所以,像这样使用它
$uri = $I->grabFromCurrentUrl();
“在测试范围内”是什么意思?我是从控制台运行此测试,而不是从web浏览器运行此测试,因此我无法访问服务器端的$\u服务器。但是如果我在codeception框架中有一些方法,比如
$I->canSeeCurrentUrlEquals()
,那么我应该能够以某种方式访问当前的url。。。怎么做?这就是问题…请编辑您的问题以包含此附加信息。我只获取URI/URL的路径部分,而不获取完整内容(包括http)。我希望使用协议等获取完整URL对某人有用。请使用以下内容替换return语句:return$this->getModule('WebDriver')->\u getUrl()。$this->getModule('WebDriver')->u getCurrentUri();