51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

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

appium + python + 判断元素是否显示,不显示则上滑

[复制链接]
  • TA的每日心情
    无聊
    昨天 09:16
  • 签到天数: 498 天

    连续签到: 5 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2019-4-17 14:01:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    1测试积点
    大家好,请教个问题。。。我现在的需求是。。判断元素是否在手机上显示,若不显示,则上滑,继续查找。appium上手机定位到元素,我使用is_displayed判断是否在界面上显示。。为什么明明没有显示的元素,也会返回True。。。。求大神们指教!

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

    使用道具 举报

  • TA的每日心情
    慵懒
    2022-7-23 11:23
  • 签到天数: 316 天

    连续签到: 1 天

    [LV.8]测试军长

    2#
    发表于 2019-4-18 09:46:03 | 只看该作者
    本帖最后由 104~牛牛 于 2019-4-18 10:06 编辑

    selenium元素明明可见但is_displayed()为False (2017-07-19 15:47:44)[url=]转载[/url]

    分类: python

    selenium元素明明可见但is_displayed()为False,这样造成click的时候抛出异常:不可见的元素。目前知道的可选方案有:

    修改页面当前元素,或者当前元素父元素的CSS,使元素的isDisplayed()值为true

    相关信息如下:
    1,isDisplayed为false,是指那个元素是存在的,只是webdriver认为不见.回到关键问题,webdriver是如何判断一个元素是否displayed,请参照:2、存在使用webElement.text取不到任何字符,但是用webElement.get_attribute("innerHTML")能够取到字符的情况,特别是is_displayed()属性为false的时候。

    3、可以使用JavaScript修改元素的可见属性。
    browser.execute_script('$(arguments[0]).fadeIn()', currentElement)
    browser.execute_script('$(arguments[0]).style.display=""',currentElement)
    这两条语句都可以,注意要执行:
    webDriver.execute_script(js)

    4、我的这次错误,最后找到原因了,是因为webElement找错了,有3个相同属性的,只有一个是可见的,是网页上见到的那个。IE下的调测真实麻烦,这个网站是IE only的,所以没有别的办法。

    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2022-7-23 11:23
  • 签到天数: 316 天

    连续签到: 1 天

    [LV.8]测试军长

    3#
    发表于 2019-4-18 10:06:06 | 只看该作者
    selenium元素明明可见但is_displayed()为False (2017-07-19 15:47:44)转载▼
    分类: python
    selenium元素明明可见但is_displayed()为False,这样造成click的时候抛出异常:不可见的元素。目前知道的可选方案有:

    修改页面当前元素,或者当前元素父元素的CSS,使元素的isDisplayed()值为true

    相关信息如下:
    1,isDisplayed为false,是指那个元素是存在的,只是webdriver认为不见.回到关键问题,webdriver是如何判断一个元素是否displayed,请参照:
    http://www.w3.org/TR/webdriver/#determining-visibility
    2、存在使用webElement.text取不到任何字符,但是用webElement.get_attribute("innerHTML")能够取到字符的情况,特别是is_displayed()属性为false的时候。

    3、可以使用JavaScript修改元素的可见属性。
    browser.execute_script('$(arguments[0]).fadeIn()', currentElement)
    browser.execute_script('$(arguments[0]).style.display=""',currentElement)
    这两条语句都可以,注意要执行:
    webDriver.execute_script(js)

    4、我的这次错误,最后找到原因了,是因为webElement找错了,有3个相同属性的,只有一个是可见的,是网页上见到的那个。IE下的调测真实麻烦,这个网站是IE only的,所以没有别的办法。
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 08:48
  • 签到天数: 1767 天

    连续签到: 5 天

    [LV.Master]测试大本营

    4#
    发表于 2019-4-18 10:07:36 | 只看该作者
    is_displayed函数只能用于该元素已经存在去判断该元素是否出现,而不能判断某个元素是否存在
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 07:18
  • 签到天数: 2778 天

    连续签到: 5 天

    [LV.Master]测试大本营

    5#
    发表于 2019-4-18 10:21:26 | 只看该作者
    判断是否存在
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 10:11
  • 签到天数: 1485 天

    连续签到: 1 天

    [LV.10]测试总司令

    6#
    发表于 2019-4-18 10:44:23 | 只看该作者
    隐藏而已
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2021-12-27 08:30
  • 签到天数: 471 天

    连续签到: 1 天

    [LV.9]测试副司令

    7#
    发表于 2019-4-18 10:47:17 | 只看该作者
    隐藏未显示
    回复

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-9-28 07:22 , Processed in 0.080101 second(s), 21 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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