51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 5695|回复: 6
打印 上一主题 下一主题

元素不可见

[复制链接]
  • TA的每日心情

    2017-5-5 15:56
  • 签到天数: 17 天

    连续签到: 1 天

    [LV.4]测试营长

    跳转到指定楼层
    1#
    发表于 2013-12-15 22:09:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    请问一下元素不可见的情况怎么处理呀 我在操作一个元素的时候报了Element is not currently visible and so may not be interacted with
    Command duration or timeout: 12 milliseconds 的错误

    我用的WebElement e= driver.findElement(By.xpath("//table/tbody/tr[5]/td/input"));

    if(!(e.isDisplayed())){System.out.println("Element is not displayed!"); };
                  来判断 可以打出Element is not displayed! 应该是说明这个元素是不可见的了吧 ?之后就不知道怎么处理了 上网上也没查到 试过用css来取元素也是一样的效果

    测试的网页就是http://tousu.baidu.com/zhidao/add#2 是一个百度的网页用账户登录就可以了 我是想点击下面的提交,上面的账号 描述等都已经填写了
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    该用户从未签到

    2#
    发表于 2013-12-16 11:02:26 | 只看该作者
    你把xpath换成"//table/tbody/tr[5]/td/input[@class='btn']" 试下.
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.9]测试副司令

    3#
    发表于 2013-12-16 12:20:14 | 只看该作者
    不是我觉得首先要确保你的xpath能找到元素吧。。。能不用xpath就不用吧。。贴出属性来看看
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2017-5-5 15:56
  • 签到天数: 17 天

    连续签到: 1 天

    [LV.4]测试营长

    4#
     楼主| 发表于 2013-12-16 22:15:59 | 只看该作者
    回复 2# zhulifu

    可以了 谢谢呀 哈  问下为什么你这么定位就没问题了呢 我开始用的 css定位driver.findElement(By.cssSelector("input[value='提交']")); 不可以 后来看网上有的说有时候用@属性就出现元素不可见的问题 所以就写了一个没有@的xpath 就是一楼写的那个 还是不可以,但是我看你教我的方法也有@属性呀 是我的定位元素有问题吗?还是别的什么问题
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2017-5-5 15:56
  • 签到天数: 17 天

    连续签到: 1 天

    [LV.4]测试营长

    5#
     楼主| 发表于 2013-12-16 22:24:10 | 只看该作者
    回复 3# joykao 属性见图片 我看是用的 driver.findElement(By.cssSelector("input[value='提交']")) 定位结果Element is not currently visible的问题,后来看网上有人说 有时候用@属性会出现这种问题 就试着写了一个 xpath的 就是driver.findElement(By.xpath("//table/tbody/tr[5]/td/input"))这个也不行 不过用楼上教的那个方法就可以了 这是什么原因呀 是我的元素定位有问题还是什么别的原因呀 不过我用isDisplayed方法判断时候 可以取到元素 就是 判断是不可见的 用 if(!(e.isDisplayed())){System.out.println("Element is not displayed!"); };
                  来判断 可以打出Element is not displayed! 不知道怎么回事   唉 还是自己练的少 有点问题就可难住了

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    回复 支持 反对

    使用道具 举报

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

    连续签到: 1 天

    [LV.9]测试副司令

    6#
    发表于 2013-12-17 11:07:01 | 只看该作者
    回复 5# chuodl


    这种很明显的元素就不要用xpath去定位了。。。用cssSelector准确而且效率高。。。

    css的值可以组合起来的。。。当然在你用css值的时候最好先去验证下你写的值是不是取到了你想要的元素。。个人经验,经常有一些隐藏的元素属性几乎和显示的元素没什么大的区别。。就比如你input[value='提交']在页面上用firefind可能会找到多个元素。。。当然属性值可以搭配使用的。。。只要在后面接上[..........]自己好好去多研究下如果locate 元素吧。。把各个方法都去熟悉下。。。
    ID,name,cssSelector,xpath, linkText, tagName等等。。。。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2013-12-17 12:04:41 | 只看该作者
    回复 4# chuodl


       你写的xpath能找到3个元素...肯定不行的
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-22 09:28 , Processed in 0.069919 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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