我想出了一个问题,经过数小时的谷歌搜索后仍然无法解决:你是我最后的机会......
我有一个简单的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始终为null,我找不到任何解决方案来获取测试方法中的当前浏览器。
这里有人有解决方案吗?
答案 0 :(得分:0)
在C#中(不同于你的PHP问题,但它可能会像我一样帮助遇到这个问题的人),我使用driver.Capabilities.BrowserName
其中driver是当前测试运行的OpenQA.Selenium.Remote.RemoteWebDriver