錯誤原因:登錄時,會彈跳出一個登錄對話框。此對話框即是Javascript語句寫的。
解決方法:用waitForElementPresent 方法,其方法是檢查頁面上的元素是否存在。
登錄之后的語句,都是JAVASCRIPT語句執(zhí)行之后出現(xiàn)的。建議檢驗后一個可輸入元素。
例如錄制腳本:
Comand Target Value
open /
click link=登錄
waitForElementPresent id=password //此句為添加的輔助代碼,檢查元素
type id=username adminuser
type id=password adminpwd
………………
clickAndWait link=退出
轉(zhuǎn)成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這一句,轉(zhuǎn)化成PHPUNIT代碼后,即是for循環(huán)代碼那一段。
在PHPUNIT中也可以直接添加該段代碼。且完全可以將for循環(huán)代碼這一段替換成:
$this->waitForElementPresent("id=password");
這樣單獨的一句。完全可以只寫這一句,也可以達到檢查這個元素的效果。
解釋waitForElementPresent用法:
waitForElementPresent(locator)等待指定元素出現(xiàn)在頁面上。