在代码中设置用户代理cept

时间:2016-03-02 04:21:50

标签: php testing codeception

我在搜索机器人抓取工具的项目中有一些功能/限制,我想使用代码测试它们,我发现有一个选项可以使用setHeader方法设置标头。就我而言,它并没有起作用。我收到[RuntimeException] Call to undefined method FunctionalTester::setHeader错误。

代码如下:

<?php
/** @var \Codeception\Scenario $scenario */
$I = new FunctionalTester($scenario);

$I->setHeader('User-Agent', 'Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)');

FileDetailPage::of($I)->amOnFileDetail(96972088, 'raped.zip');

根据Authorization header not making it through in Codeception API testing我想知道是否必须为每个请求设置用户代理标头。是否有方法或配置选项可永久更改用户代理

2 个答案:

答案 0 :(得分:2)

您可能会将功能测试验收测试混淆。只有验收测试使用PhpBrowser。功能测试直接运行PHP代码而不发出HTTP请求。

但是要尝试回答全局设置标题的问题......

根据我对doc page here的理解,我认为你应该能够在配置文件中设置用户代理,如下所示:

class_name: AcceptanceTester
modules:
    enabled:
        - PhpBrowser:
            url: http://ames.dev/
            headers:
                User-Agent: Codeception Custom User Agent
        - \Helper\Acceptance

但我还没有完全发挥作用。如果您想要更正我的帖子,请协助编辑我的帖子。

答案 1 :(得分:2)

在我的情况下,我让它像这样工作:

class_name: AcceptanceTester
modules:
    enabled:
        - PhpBrowser:
            url: http://xxxx.xx
            headers:
                header-testing:
                    value: someValue
        - \Helper\Acceptance

这使得$_SERVER变量中的数组值:

HTTP_HEADER_TESTING => "someValue"