Redirect PHPBrowser隐藏API方法“_loadPage";没有遵循301重定向

Redirect PHPBrowser隐藏API方法“_loadPage";没有遵循301重定向,redirect,codeception,Redirect,Codeception,我正在Codeception v2.2.11中用PHPBowser编写一个测试,它使用 我已将其添加到我的\Helper\Api中,如下所示: public function loadpage($link) { $this->getModule('PhpBrowser')->_loadPage('POST', $link); } $link = 'http://www.fiercebiotech.com/contact'; $I->loadp

我正在Codeception v2.2.11中用PHPBowser编写一个测试,它使用

我已将其添加到我的\Helper\Api中,如下所示:

public function loadpage($link)
    {
        $this->getModule('PhpBrowser')->_loadPage('POST', $link);

    }
$link = 'http://www.fiercebiotech.com/contact';
$I->loadpage($link);
并在Api Codeception测试中调用它,如下所示:

public function loadpage($link)
    {
        $this->getModule('PhpBrowser')->_loadPage('POST', $link);

    }
$link = 'http://www.fiercebiotech.com/contact';
$I->loadpage($link);
我面临的问题是,当使用
\u loadpage
时,它不遵循重定向。最终解决时,此示例链接被重定向到:

以下是当
\u loadpage
打开
$link
时标题响应控制台的输出

   I loadpage "http://www.fiercebiotech.com/contact"
  [Request Headers] []
  [Page] http://www.fiercebiotech.com/contact
  [Response] 404
我需要帮助获得
\u loadpage
以不在~/contact处停止,而是按照301重定向到~/contact us,这样我就可以得到输出标题响应

[page] http://www.fiercebiotech.com/contact-us
[response] 200 
目前我无法获得
\u loadpage
以遵循301重定向。有人成功地做到了这一点吗

我尝试使用Codeception REST函数启动以下重定向并添加
allow\u redirects:true
,如下所示,但这两种技术似乎都不起作用(因为没有遵循重定向)


我找到了解决问题的方法:

问题开始于,
\u loadpage
不遵循重定向,它只加载请求的页面并停止。在本例中,“~/contact-us”,忽略页面被重定向到(使用
301
)到“~/contact-us”的事实

我不能简单地加载页面(通过
\u loadpage
) 获取标题响应 并假设我将获得重定向URL的标头响应 我将只得到原始URL的标题响应

解决方案: 我必须在我的
foreach
循环中:

  • 转到URL
  • 发送
    GET
  • 抓取HTTP头
  • 断言HTTP头具有
    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);
        }
    }
    

    你的问题是你的状态是404,而不是301。谢谢@Naktibalda的回复。问题是,如果我访问Chrome中的链接~/contact(源代码中的链接),当它到达最终目的地~/contact us时,链接解析为301。正如在这段视频抓取中所看到的,这是我从Chrome得到的标题响应:
    状态码URL IP页面类型重定向类型重定向URL 301http://www.fiercebiotech.com/contact	54.225.158.254服务器重定向永久http://www.fiercebiotech.com/contact-us 200http://www.fiercebiotech.com/contact-us	54.225.158.254正常无无