1

我有一个按钮(在表单之外),它使用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()使用该位置调用命令。不确定这是否是一种可接受的测试方法。

4

2 回答 2

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);
}
于 2010-06-02T16:41:49.850 回答
0

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

selenium.fireEvent("id=create", "click");
于 2010-06-02T09:21:59.550 回答