Selenium RC:如何点击使用onclick window.location的按钮?

时间:2010-06-01 22:58:06

标签: button safari selenium phpunit window.location

我有一个按钮(在表单之外),使用onclick属性重定向到另一个页面,该属性调用window.location将用户重定向到另一个页面。这次我无法改变HTML。我正在使用Safari 4进行测试。如何单击使用onclick属性和window.location的按钮,使用Safari 4和Selenium RC PHPUnit Extension重定向?

这是我的HTML:

<input type="button" onclick="window.location='/registrations/new'" value="Start a new registration" id="create">

更新或者,我正在考虑做一些事情,我断言在window.location=''中指定了一个位置,存储该位置,然后调用open()命令使用该位置。不确定这是否是一种可接受的测试方法。

2 个答案:

答案 0 :(得分:2)

如果按钮有clickAndWait()

,我们决定扩展默认openAndWait()功能以致电onclick="window.location='/something';"
/**
 * Extends original clickAndWait() functionality to provide the ability to click buttons that use window.location to redirect users
 * @param $locator
 */
public function clickAndWait($locator)
{
    $this->assertElementPresent($locator);
    $hasOnclickAttribute = $this->getEval('this.browserbot.findElement("' . $locator . '").hasAttribute("onclick")');
    if ($hasOnclickAttribute === 'true') {
        $onclickValue = $this->getAttribute("$locator@onclick");
        if (strpos($onclickValue, "window.location=") !== false) {

            // Clean up the location
            $temp = explode("=" , $onclickValue);               
            $location = trim($temp[1], "';");               
            $location = trim($location, '"');

            return $this->openAndWait($location);
        }
    }
    return parent::clickAndWait($locator);
}

答案 1 :(得分:0)

应该,但您也可以尝试使用fireEvent命令触发click事件。

selenium.fireEvent("id=create", "click");