Php 如何从codeception&;获取当前url;幻影测试?

Php 如何从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

我正在用我的测试在estore中创建产品,提交表单后需要获取url

提交按钮后是否可以在测试范围内获取url

$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();