错误原因:登录时,会弹跳出一个登录对话框。此对话框即是Javascript语句写的。
解决方法:用waitForElementPresent 方法,其方法是检查页面上的元素是否存在。
登录之后的语句,都是JAVASCRIPT语句执行之后出现的。建议检验后一个可输入元素。
例如录制脚本:
Comand Target Value
open /
click link=登录
waitForElementPresent id=password //此句为添加的辅助代码,检查元素
type id=username adminuser
type id=password adminpwd
………………
clickAndWait link=退出
转成PHPUNIT后代码为:
$this->open("/");
$this->click("link=登录");
for ($second = 0; ; $second++) {
if ($second >= 60) $this->fail("timeout"); //超过60秒,则报超时错误
try {
if ($this->isElementPresent("id=password")) break; //检查用户名这个元素
} catch (Exception $e) {}
sleep(1);
}
$this->type("id=username", "adminuser");
$this->type("id=password", "adminpwd");
…………
$this->click("link=退出");
上述中selenium中的waitForElementPresent id=password这一句,转化成PHPUNIT代码后,即是for循环代码那一段。
在PHPUNIT中也可以直接添加该段代码。且完全可以将for循环代码这一段替换成:
$this->waitForElementPresent("id=password");
这样单独的一句。完全可以只写这一句,也可以达到检查这个元素的效果。
解释waitForElementPresent用法:
waitForElementPresent(locator)等待指定元素出现在页面上。