我如何增加硒脚本的鲁棒性



我正在运行大约30个脚本的脚本脚本测试用例(每个测试用例是脚本),并且通常会有失败包括:无法识别指定的元素,不存在元素。

我已经添加了许多不同的方法来等待元素出现。有时,当它显然在那里时,我想硒很难找到元素的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(); 

即使这也会出错!!!而且它不会落入硒。我该怎么做才能建立脚本的鲁棒性?任何帮助,将不胜感激。

我在IE 8上使用Selenium 2.20.0。

根据您的问题,如果它是找不到定位器ID的问题,请尝试使用其他定位器,例如 css and XPath。

应用 Selenium.WaitforPagetoload 每当您移动到新页面或打开URL时。

如果您正在使用基于AJAX的应用程序工作,则 Selenium.WaitForCondition 对您来说是gud。

无论您认为定位器在操作后可能需要一些时间出现,使用适当的等待这些元素。