我在Codeception v2.2.11中使用PHPBowser编写了一个使用_loadpage的隐藏API方法的测试。
我已将此添加到我的\ Helper \ Api中,如下所示:
public function loadpage($link)
{
$this->getModule('PhpBrowser')->_loadPage('POST', $link);
}
并在Api Codeception测试中调用它,如下所示:
$link = 'http://www.fiercebiotech.com/contact';
$I->loadpage($link);
我面临的问题是,在使用_loadpage
时,它不会遵循重定向。最终解析后的这个exampled链接被301重定向到:
http://www.fiercebiotech.com/contact-us
以下是_loadpage
打开$link
时的标头响应控制台输出。
I loadpage "http://www.fiercebiotech.com/contact"
[Request Headers] []
[Page] http://www.fiercebiotech.com/contact
[Response] 404
我需要帮助让_loadpage
不要停在〜/ contact但是按照301重定向到〜/ contact-us,所以我可以得到输出头响应
[page] http://www.fiercebiotech.com/contact-us
[response] 200
目前我无法让_loadpage
遵循301重定向。那里的任何人都有成功吗?
我试图使用Codeception REST函数startFollowingRedirects并添加allow_redirects: true
,如下所示,但这两种技术似乎都不起作用(因为没有遵循重定向)。
class_name: ApiTester
modules:
enabled:
- WebDriver:
url: ''
browser: 'chrome'
window_size: 1200x993
clear_cookies: true
allow_redirects: true
- \Helper\Acceptance
- REST:
url: 'host'
depends: PhpBrowser
allow_redirects: true
- \Helper\Api
答案 0 :(得分:0)
我找到了解决问题的方法:
问题始于,因为我怀疑_loadpage
不遵循重定向,它只加载请求的页面并停止。在这种情况下'〜/ contact-us',忽略了页面被重定向到(301
)到'〜/ contact-us'的事实。
我无法简单地加载页面(通过_loadpage
)
获取标头响应
并假设我将获得重定向URL的标头响应
我只会得到原始网址的标题回复。
解决方案:
我必须在我的foreach
循环中:
GET
200OK
响应解决方案 - 与Codeception代码一样:
public function Validate_httpStatus_mainNav($mainNavLocator)
{
//Used to test main navigation -- 404 tests
$I = $this;
$mainNavLinks = $I->grabMultiple($mainNavLocator, 'href');
codecept_debug($mainNavLinks);
foreach ($mainNavLinks as $link) {
$I->amOnUrl($link);
$I->sendGET($link);
$I->grabHttpHeader($link);
$I->canSeeResponseCodeIs(HttpCode::OK);
}
}