51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2061|回复: 13
打印 上一主题 下一主题

判断所查找的元素是否存在,遇到了问题,求帮助!

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2015-11-28 17:42:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 OverTimeDog 于 2015-11-28 17:55 编辑

<div class="mod-select-licence">
        <a target="_self" href="/bmp/vender/qualificationbind?license_type=incoming_certificate,hygiene_certificate&item_id=6146475799328406720&id=10126&lic_id=3947733990452259872&flow=#list">选择已经添加过的内容</a>
</div>
因为上面一段代码在一个页面中有时存在,有时候不存在,所以我想用if else判断,当它存在的时候执行一部分操作,不存在的时候执行另一部分操作
但是现在页面不存在这个文案的时候,程序总是报错,用了很多方法都不行
试了调用下面这个方法,还是报错!
public static boolean isElementExist(By by){
      try{
           driver.findElement(by);
           return true;
         }
     catch(NoSuchElementException e){
           return false;
        }
        }
求助各位大神,到底应该怎么写,才能正确的执行!



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    开心
    2017-2-13 16:28
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    2#
    发表于 2015-11-30 00:03:45 | 只看该作者
    这个问题值得关注
    不懂帮顶
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2021-8-29 22:04
  • 签到天数: 1122 天

    连续签到: 1 天

    [LV.10]测试总司令

    3#
    发表于 2015-11-30 11:16:11 | 只看该作者
    程序总是报错,无图无真相
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
     楼主| 发表于 2015-11-30 11:44:34 | 只看该作者
    wuxi88 发表于 2015-11-30 11:16
    程序总是报错,无图无真相

    就是没有找到元素啊...因为这个元素的判断我写在了if里面,这段文字连接有时候有,有时候没有,我的问题就是找不到元素的时候如何能继续执行
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2020-12-8 11:20
  • 签到天数: 605 天

    连续签到: 1 天

    [LV.9]测试副司令

    5#
    发表于 2015-11-30 13:47:41 | 只看该作者
    你这么设计有漏洞的因为的if,else语句中的true or false还是根据最后driver.findElement()去找元素再判断存不存在,这个本来就不对,如果元素存在那没问题返回值可以是true,元素不存在,driver.findElement()本身就会跑出异常,返回false毫无意义根本不会执行到那边,判断元素存不存在本身就是检查点,这种存在和不存在后的操作应该要拆分成不同的用例,如果元素会显示出来,只是时间问题那你就加上等待,等元素出现在操作

    评分

    参与人数 1测试积点 +10 收起 理由
    lsekfe + 10 恭喜您获得测试几点10

    查看全部评分

    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
     楼主| 发表于 2015-11-30 15:02:19 | 只看该作者
    joykao 发表于 2015-11-30 13:47
    你这么设计有漏洞的因为的if,else语句中的true or false还是根据最后driver.findElement()去找元素再判断 ...

    大神 你说的确实很对,其实我就是想判断不管元素是否找到,都能够把程序执行下去。我说的这个问题不是时间问题,如果这个页面没有文本链接,就不会再有,如果有这个文本链接,就一直有。所以我说的这种情况,就没有办法执行下去了是么?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2021-8-29 22:04
  • 签到天数: 1122 天

    连续签到: 1 天

    [LV.10]测试总司令

    7#
    发表于 2015-11-30 17:07:30 | 只看该作者
    给你提供一个思路,看看能不能解决,你不是说他时有时没有嘛,执行了某操作之后等待X秒中,然后在执行的boolean方法,这样或许可以解决。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
     楼主| 发表于 2015-11-30 19:38:50 | 只看该作者
    wuxi88 发表于 2015-11-30 17:07
    给你提供一个思路,看看能不能解决,你不是说他时有时没有嘛,执行了某操作之后等待X秒中,然后在执行的boo ...

    请问等待几秒钟的意义是...?我是进入那个页面就会知道有没有那个文本链接...显示不显示跟等待几秒没什么关系呀
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
     楼主| 发表于 2015-12-1 14:57:23 | 只看该作者
    持续关注此问题,希望有大神能给点思路!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
     楼主| 发表于 2015-12-1 14:57:29 | 只看该作者
    持续关注此问题,希望有大神能给点思路!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-12-16 12:57
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]测试连长

    11#
    发表于 2015-12-2 11:18:16 | 只看该作者
    可以通过时间来控制, 使程序可以执行下去:
    看看以下对你有没有用:
    public static WebElement waitUntilElementDisplay(int waittime, String xpath) throws Exception {
                    long nowTime = System.currentTimeMillis();
                    WebElement webe = null;
                    while ((System.currentTimeMillis()- nowTime)/1000 < waittime){
                            try{
                                    webe = driver.findElementByXPath(MyUtils.getXpath(xpath));
                                    if(webe.isDisplayed()==true){
                                            break;
                                    }else{
                                            Thread.sleep(1000);               
                                    }
                            }catch(NoSuchElementException e ){
                                    System.out.println("Wating for.." + (System.currentTimeMillis()- nowTime)/1000 + "..seconds; " );
                                    Thread.sleep(1000);
                            }
                    }
                    return webe;       
            }
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2015-12-30 08:17
  • 签到天数: 64 天

    连续签到: 8 天

    [LV.6]测试旅长

    12#
    发表于 2015-12-4 11:30:56 | 只看该作者
    增加等待时间:等待页面加载完成
    然后按照你写的if else 去执行;若出现执行一部分操作,若没有出现执行另外一部分操作;
    你出现的这个现象:有时候有,有时候没有;我觉得是页面没有加载完成导致;
    一般这种就是增加等待时间,使网页加载完成,然后再去判断元素是否存在;
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2020-8-4 11:02
  • 签到天数: 943 天

    连续签到: 1 天

    [LV.10]测试总司令

    13#
    发表于 2015-12-4 13:46:40 | 只看该作者
    1. 先判断:”现在页面不存在这个文案的时候,程序总是报错“ 文案是否存在;
    2. 再存在时引用返回值信息
    3.不存在时,返回值设置一个特定值,给一个输出信息;
    4.也可以使用宏定义
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2017-10-13 10:01
  • 签到天数: 2 天

    连续签到: 2 天

    [LV.1]测试小兵

    14#
    发表于 2015-12-9 10:48:59 | 只看该作者
    支持:::::增加等待时间:等待页面加载完成 后再去查找页面元素
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-23 19:17 , Processed in 0.071135 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表