如何从codeception和phantomjs测试中获取当前url?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从codeception和phantomjs测试中获取当前url?相关的知识,希望对你有一定的参考价值。

我正在使用我的测试在estore中创建产品,并且需要在提交表单后获取URL。

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

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

我从控制台运行此测试,而不是从Web浏览器运行,因此我无法访问服务器端的$ _​​SERVER。

但是,如果我在代码框架中有一些像$I->canSeeCurrentUrlEquals()这样的方法,那么我应该能够以某种方式访问​​当前的URL ...

怎么做?

答案

解决方案是在_support / AcceptanceHelper.php文件中为AcceptanceHelper添加一个帮助方法:

    class AcceptanceHelper extends CodeceptionModule
    {

        /**
         * Get current url from WebDriver
         * @return mixed
         * @throws CodeceptionExceptionModuleException
         */
        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和phantomjs测试中获取当前url?的主要内容,如果未能解决你的问题,请参考以下文章

PhantomJS 无法访问自签名 HTTPS 页面 Codeception

Codeception bash颜色输出不显示

如何将失败的屏幕截图包含到代码接收报告中

python selenium结合PhantomJS对ajax异步页面进行压测或者爬虫

Yii2中如何使用CodeCeption

如何阻止 codeception/selenium 在断言失败时关闭浏览器窗口?