无法在CakePHP 2.6中识别Selenium请求

时间:2015-04-07 00:32:30

标签: cakephp selenium phpunit cakephp-2.6

我在使用CakePHP与PHPUnit和Selenium时遇到问题,在互联网上寻找任何帮助都很难。我根本无法弄清楚如何在CakePHP中识别出来自我的Selenium代理的请求,以便我可以相应地设置连接和数据库环境。

任何帮助都将受到高度赞赏!有关在Selenium请求时设置我的CakePHP应用程序数据库环境的最佳方式的更多信息也是最受欢迎的。

1 个答案:

答案 0 :(得分:1)

第一步是将Selenium中的用户代理设置为您的应用程序认为特殊的内容。请参阅Selenium WebDriver Documentation

然后在CakePHP中,您可以使用global function env()来测试HTTP_USER_AGENT值。 env是检查环境变量的包装器,如$_SERVER

例如,在database.php文件中:

var $default = array(
    'datasource' => 'Database/Mysql',
    'persistent' => false,
    'host' => 'localhost',
    'login' => 'user',
    'password' => '****',
    'database' => 'production_db',
    'prefix' => ''
);

function __construct() {
    // set database connection settings for testing environment
    if (stristr(env('HTTP_USER_AGENT'), 'selenium') {
        $this->default['database'] = 'test_db';
    }
}

如果您无法使用Selenium设置用户代理,也许您可​​以使用URL传递get变量。

使用PHPUnit的Selenium扩展的示例:

$this->setBrowserUrl('http://www.example.com?selenium=true');

在CakePHP中,您将访问$_GET数组中的变量。