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