I'm coming up with a problem I still can't solve after hours of hard googling : you are my very last chance...
I have a simple PHP page (let's say "bad_request.php") that respond with a 400 Bad Request status code :
<?php
header('Status: 400 Bad Request', false, 400);
header($_SERVER['SERVER_PROTOCOL'].' 400 Bad Request', false, 400);
exit('Error message');
?>
I have a Selenium RC Test case with a defined set of browsers :
static public $browsers = array(
array(
'name' => 'Google Chrome 12 on Win7',
'browser' => '*googlechrome'
),
array(
'name' => 'Internet Explorer 9 on Win7',
'browser' => '*iehta'
),
...
)
And I have a test method that opens "bad_request.php" and check the status code AND the error message.
The thing is all browsers don't have the same behaviour for a 400 status code : Internet Explorer displays his own error page (and doesn't show "Error message" sent with the exit function) and the other browsers display a simple blank page with "Error message".
This is why I would like my test method to look like this :
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->assertTextPres开发者_如何学Pythonent('Error message');
}
}
Sadly, browserName is always null and I didn't find any solution to get the current browser in a test method.
Does anybody here have a solution ?
In C# (different than your PHP question, but it may help someone who comes across this question like I did), I used driver.Capabilities.BrowserName
where driver is the OpenQA.Selenium.Remote.RemoteWebDriver of the current test run.
精彩评论