0
我在使用PHPUnit和Selenium時使用CakePHP時遇到了問題,並且在Internet上很難找到任何幫助。我根本無法弄清楚如何在CakePHP中識別來自我的Selenium代理的請求,以便我可以相應地設置連接和數據庫環境。無法在CakePHP 2.6中識別Selenium請求
任何幫助將不勝感激!有關在請求來自Selenium時設置CakePHP應用程序的數據庫環境的最佳方式的更多信息也非常受歡迎。
我在使用PHPUnit和Selenium時使用CakePHP時遇到了問題,並且在Internet上很難找到任何幫助。我根本無法弄清楚如何在CakePHP中識別來自我的Selenium代理的請求,以便我可以相應地設置連接和數據庫環境。無法在CakePHP 2.6中識別Selenium請求
任何幫助將不勝感激!有關在請求來自Selenium時設置CakePHP應用程序的數據庫環境的最佳方式的更多信息也非常受歡迎。
第一步是將用戶代理設置爲Selenium,以便將您的應用程序識別爲特殊的東西。請參閱Selenium WebDriver Documentation。
然後在CakePHP中,您可以使用global functionenv()
來測試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';
}
}
如果不能設置用戶代理與硒,也許你可以通過一個GET變量與URL。
實施例使用Selenium擴展PHPUnit的:
$this->setBrowserUrl('http://www.example.com?selenium=true');
在CakePHP你將訪問變量陣列$_GET
英寸
很棒!非常感謝!現在唯一的問題是,不幸的是,我沒有找到如何在PHPUnit Selenium擴展中設置用戶代理。 WebDriver文檔幾乎涵蓋了任何PHP方式。我還發現PHPUnit文檔的Selenium部分不是很全面。在使用PHPUnit和Selenium之前,你是否做過類似的事情? – lucasnadalutti
也許你可以在URL中傳遞一個get變量?我用這個信息更新了答案。 –
這也是一個很好的解決方案,雖然不夠優雅。再次感謝,會嘗試! – lucasnadalutti