我在谷歌上苦苦搜索了好几个小时,但我仍然无法解决一个问题:你是我最后的机会了…
我有一个简单的PHP页面(假设是"bad_request.php"),它响应一个400 Bad Request状态码:
<?php
header('Status: 400 Bad Request', false, 400);
header($_SERVER['SERVER_PROTOCOL'].' 400 Bad Request', false, 400);
exit('Error message');
?>
我有一个定义了一组浏览器的Selenium RC测试用例:
static public $browsers = array(
array(
'name' => 'Google Chrome 12 on Win7',
'browser' => '*googlechrome'
),
array(
'name' => 'Internet Explorer 9 on Win7',
'browser' => '*iehta'
),
...
)
我有一个测试方法,打开"bad_request.php",检查状态码和错误信息。
事情是所有的浏览器都没有相同的行为400状态码:Internet Explorer显示自己的错误页面(不显示"错误消息"与退出功能发送)和其他浏览器显示一个简单的空白页面与"错误消息"
这就是为什么我想让我的测试方法看起来像这样:
public function testBadRequest()
{
$this->open('bad_request.php');
/*
* Test the status code with my own method
*/
$this->assertStatusCode(400);
/*
* Test the page content
*/
// Case of Internet Explorer
if (preg_match('`^Internet Explorer`', $this->browserName )) {
$this->assertTextPresent('HTTP 400');
}
// Case of any other browser
else {
$this->assertTextPresent('Error message');
}
}
遗憾的是,browserName总是为空,我没有找到任何解决方案,以获得当前浏览器的测试方法
有人有解决办法吗?
在c#中(不同于您的PHP问题,但它可能会帮助像我这样遇到这个问题的人),我使用driver.Capabilities.BrowserName
,其中驱动程序是当前测试运行的OpenQA.Selenium.Remote.RemoteWebDriver。