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

时间:2011-07-18 12:19:17

标签: php browser selenium-rc

我想出了一个问题,经过数小时的谷歌搜索后仍然无法解决:你是我最后的机会......

我有一个简单的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');
    }
}

可悲的是,bro​​wserName始终为null,我找不到任何解决方案来获取测试方法中的当前浏览器。

这里有人有解决方案吗?

1 个答案:

答案 0 :(得分:0)

在C#中(不同于你的PHP问题,但它可能会像我一样帮助遇到这个问题的人),我使用driver.Capabilities.BrowserName其中driver是当前测试运行的OpenQA.Selenium.Remote.RemoteWebDriver