使用PHP Codeception和WebDriver PHP包装器(Facebook),通常可以获取PhantomJS或真实浏览器所使用的实际页面请求的环境变量吗?
也许这只是我对验收测试背后的技术的误解,但考虑到像Codeception这样的测试框架正在使用PhantomJS或像Chrome或Firefox这样的真实浏览器请求页面,我希望能够访问例如$ _SERVER全局变量。不幸的是,在WebDriver Codeception模块或Facebook PHP WebDriver包装器中找不到任何方法。
具体来说,我有一个应该只使用SSL的页面,因此在访问页面时预计会发生301重定向。 我需要在Codeception中有一个验收测试用例来检查它并检查$ _SERVER ['HTTPS']全局变量应该这样做。
首先,我尝试将URL与“https://”匹配,但WebDriver包装器方法_getCurrentUrl()
仅提供没有协议和主机的URI部分。
然后我尝试在自定义Helper操作中获取$ _SERVER变量,但是直接访问的变量看起来像是来自CLI环境,而不是浏览器请求。
答案 0 :(得分:2)
如果已经使用过WebDriver模块:
$currentUrl = $I->executeJS('return jQuery(location).attr("href");');
答案 1 :(得分:1)
不,您无法在验收测试中访问$ _SERVER,因为$ _SERVER位于服务器端,您所拥有的只是客户端。
如果要检查完整的URL,可以使用webdriver实例的getCurrentURL
方法,可以使用与帮助程序中的_getCurrentUri
方法相同的方式访问它。
public function checkUrl()
{
$url = $this->getModule('WebDriver')->webDriver->getCurrentURL();
//do your checks here
}