首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何增加我的Selenium脚本的健壮性?

如何增加我的Selenium脚本的健壮性?
EN

Stack Overflow用户
提问于 2012-11-09 01:25:21
回答 1查看 262关注 0票数 0

我正在连续运行大约30个脚本测试用例(每个测试用例都是一个脚本),并且经常出现故障,包括:无法识别指定的元素,元素不存在。

我已经添加了很多不同的方法来等待元素出现。有时候,当元素很明显存在的时候,我猜Selenium很难找到元素的id?

我已经包含了几个

代码语言:javascript
复制
do{
    if(selenium.isElementPresent("id=resultTable_0_0"){
    selenium.click("viewResultForm:refresh_button");
    }
}while (!selenium.isElementPresent("id=resultTable_0_0"));

代码语言:javascript
复制
if(selenium.isElementPresent("id=resultTable_0_0"))
        selenium.isVisible("id=resultTable_0_0");

代码语言:javascript
复制
if(selenium.isElementPresent("id=resultTable_0_0_1_to"))
    selenium.click("resultTable_0_0_1_to");

总是在做某件事之前检查元素是否存在。这可能对性能有很大的影响,但现在我只希望我的脚本运行时没有错误,完全健壮。我有一段代码:

代码语言:javascript
复制
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而“假装”成功而失败。我可以做些什么来构建我的脚本的健壮性?任何帮助都将不胜感激。

我在IE8上使用Selenium 2.20.0。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-09 01:44:36

根据您的问题,如果是找不到定位器的id的问题,请尝试使用其他定位器,如、css和xpath。

当你移动到一个新的页面或者打开一个url时,应用selenium.waitforpagetoload

如果你在一个基于ajax的应用程序上工作,那么selenium.waitforcondition将会是你的gud。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13294363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档