У меня возникла проблема, которую я до сих пор не могу решить после нескольких часов жесткого поиска в Google: вы мой последний шанс ...
У меня есть простая страница 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, и я не нашел никакого решения, чтобы получить текущий браузер в тестовом методе.
У кого-нибудь здесь есть решение?