我正在连续运行大约 30 个脚本测试用例(每个测试用例都是一个脚本),并且经常出现故障,包括:无法识别指定的元素,元素不存在。
我已经添加了很多不同的方法来等待元素出现。有时当它明显存在时,我猜 Selenium 很难找到元素的 id ?
我已经包括了几个
do{
if(selenium.isElementPresent("id=resultTable_0_0"){
selenium.click("viewResultForm:refresh_button");
}
}while (!selenium.isElementPresent("id=resultTable_0_0"));
和
if(selenium.isElementPresent("id=resultTable_0_0"))
selenium.isVisible("id=resultTable_0_0");
和
if(selenium.isElementPresent("id=resultTable_0_0_1_to"))
selenium.click("resultTable_0_0_1_to");
在做某事之前总是检查一个元素是否存在。这可能会对性能产生巨大影响,但现在我只希望我的脚本运行无错误、完全健壮。我有这段代码:
do{
if(selenium.isElementPresent("id=resultTable_0_0")){
selenium.click("viewResultForm:refresh_button");
}
}while (!selenium.isElementPresent("id=resultTable_0_0"));
if(selenium.isElementPresent("id=resultTable_0_0"))
selenium.isVisible("id=resultTable_0_0");
if(selenium.isElementPresent("id=viewResultForm:currentDetailViewType"))
selenium.isVisible("id=viewResultForm:currentDetailViewType");
if(selenium.isElementPresent("id=viewResultForm:currentSearchDateType"))
selenium.isVisible("id=viewResultForm:currentSearchDateType");
if(selenium.isElementPresent("id=viewResultForm:currentLegalEntity"))
selenium.isVisible("id=viewResultForm:currentLegalEntity");
if(selenium.isElementPresent("id=viewResultForm:currentRollupBy"))
selenium.isVisible("id=viewResultForm:currentRollupBy");
if(selenium.isElementPresent("id=viewResultForm:currentSecurityAltId"))
selenium.isVisible("id=viewResultForm:currentSecurityAltId");
if(selenium.isElementPresent("id=viewResultForm:currentSecurityAltIdType"))
selenium.isVisible("id=viewResultForm:currentSecurityAltIdType");
if(selenium.isElementPresent("id=viewResultForm:currentDepoViewType"))
selenium.isVisible("id=viewResultForm:currentDepoViewType");
if(selenium.isElementPresent("id=viewResultForm:currentBusinessDate"))
selenium.isVisible("id=viewResultForm:currentBusinessDate");
System.out.println("Success T13001");
selenium.stop();
即使这样也会出错!!!它不会失败以达到 selenium.stop 和“假”成功。我可以做些什么来构建脚本的健壮性?任何帮助,将不胜感激。
我在 IE 8 上使用 Selenium 2.20.0。