从 Codeception 中的 WebDriver 模块获取完整请求 URL

Get the full request URL from WebDriver module in Codeception

使用 PHP Codeception 和 WebDriver PHP 包装器 (Facebook),通常是否可以获取由 PhantomJS 或使用的真实浏览器生成的实际页面请求的环境变量?

也许这只是我对验收测试背后的技术的误解,但考虑到像 Codeception 这样的测试框架正在请求使用 PhantomJS 或像 Chrome 或 Firefox 这样的真实浏览器的页面,我希望可以访问例如$_SERVER 全局变量。不幸的是,我在 WebDriver Codeception 模块或 Facebook PHP WebDriver wrapper.

中找不到提供此功能的任何方法

具体来说,我有一个页面应该只使用 SSL,因此在访问该页面时预计会发生 301 重定向。 我需要在 Codeception 中有一个验收测试用例来检查它并检查 $_SERVER['HTTPS'] 全局变量应该这样做。

首先,我尝试将 URL 与 'https://' 进行匹配,但 WebDriver 包装器方法 _getCurrentUrl() 仅提供没有协议和主机的 URI 部分。

然后我尝试获取自定义Helper 操作中的$_SERVER 变量,但是直接访问的变量看起来像是来自CLI 环境,而不是浏览器请求。

不,您不能在验收测试中访问 $_SERVER,因为 $_SERVER 在服务器端,您只有一个客户端。

如果你想检查一个完整的url,你可以使用webdriver实例的getCurrentURL方法,它可以像你的助手中的_getCurrentUri方法一样访问。

public function checkUrl()
{
  $url = $this->getModule('WebDriver')->webDriver->getCurrentURL();
  //do your checks here
}

如果已经使用了 WebDriver 模块:

$currentUrl = $I->executeJS('return jQuery(location).attr("href");');