如何在Selenium RC测试中获得当前浏览器


How to get the current Browser in a Selenium RC Test?

我在谷歌上苦苦搜索了好几个小时,但我仍然无法解决一个问题:你是我最后的机会了…

我有一个简单的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。