51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

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

python+selenium:识别网页按钮,报错element not visible

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2017-4-19 13:12:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大神,请问下使用python+selenium:识别网页按钮,报错element not visible该怎么处理呢,能不能改display显示值呢?

本帖子中包含更多资源

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

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

使用道具 举报

  • TA的每日心情
    无聊
    7 小时前
  • 签到天数: 1051 天

    连续签到: 1 天

    [LV.10]测试总司令

    2#
    发表于 2017-4-19 14:14:55 | 只看该作者
    在selenium +Python 进行web测试时报, 下面的语句报“Element is not visible”,但是通过 xpath checker ,xpath的定位路径是正确的。
    driver.find_element_by_xpath("//div[@id='map-setting-install-3']/div/div/label/div/div/label[2]").click()



    思路: 会不会是没有设置等待的时间,页面还没有来的及显示,在该语句前加上等待3秒

    实验: 加了时间等待,没有“Element is not visible”

    解决方法:加等待时间就可以了
    time.sleep(3)
    driver.find_element_by_xpath("//div[@id='map-setting-install-3']/div/div/label/div/div/label[2]").click()
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-7-10 10:58
  • 签到天数: 194 天

    连续签到: 1 天

    [LV.7]测试师长

    3#
    发表于 2017-4-19 14:23:04 | 只看该作者
    你这个按钮与那个display无关,首先确定有没有定位错,如果排除,可尝试添加等待时间或者查看有没有iframe
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    9 小时前
  • 签到天数: 2036 天

    连续签到: 3 天

    [LV.Master]测试大本营

    4#
    发表于 2017-4-19 16:16:24 | 只看该作者
    同意二楼的说法,加个时间等待看看再说。你这个页面看起来没有特别之处啊
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
     楼主| 发表于 2017-4-19 20:28:57 来自手机 | 只看该作者
    本帖最后由 DD丢丢 于 2017-4-19 21:16 编辑

    哈哈,二楼方法可行,但是还有两个疑问:1.为什么只能用sleep+xpath定位才可以识别呢?使用sleep+class或者使用implicitly_wait+xpath就不能定位呢
    2.通过is_displayed()查看登录按钮显示的是false,那为什么不用设置成显示就能直接使用呢
    以下为源码,网址是对外公开的公网,方便各位大神帮忙直接查看下:
    #coding=utf-8
    from selenium import webdriver
    from time import sleep
    from time import ctime
    driver=webdriver.Chrome()
    driver.get("https://passport.ds.cn/login.html?returnUrl=http://www.ds.cn/guangzhou")

    ##方法一:可正常运行
    sleep(3)
    driver.find_element_by_xpath(".//*[@id='j-generalloginform']/ul/div[5]/input").click()


    """
    ##方法二:提示element not visible
    driver.implicitly_wait(3)
    driver.find_element_by_xpath(".//*[@id='j-generalloginform']/ul/div[5]/input").click()

    ##方法三:提示element not visible
    sleep(3)
    driver.find_element_by_class_name("btnlogin").click()
    """


    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
     楼主| 发表于 2017-4-19 21:27:43 | 只看该作者
    lsekfe 发表于 2017-4-19 14:14
    在selenium +Python 进行web测试时报, 下面的语句报“Element is not visible”,但是通过 xpath checker  ...

    哈哈,谢谢楼主方法可行,但是还有两个疑问:1.为什么只能用sleep+xpath定位才可以识别呢?使用sleep+class或者使用implicitly_wait+xpath就不能定位呢
    2.通过is_displayed()查看登录按钮显示的是false,那为什么不用设置成显示就能直接使用呢
    以下为源码,网址是对外公开的公网,方便各位大神帮忙直接查看下:
    #coding=utf-8
    from selenium import webdriver
    from time import sleep
    from time import ctime
    driver=webdriver.Chrome()
    driver.get("https://passport.ds.cn/login.html?returnUrl=http://www.ds.cn/guangzhou")

    ##方法一:可正常运行
    sleep(3)
    driver.find_element_by_xpath(".//*[@id='j-generalloginform']/ul/div[5]/input").click()


    """
    ##方法二:提示element not visible
    driver.implicitly_wait(3)
    driver.find_element_by_xpath(".//*[@id='j-generalloginform']/ul/div[5]/input").click()

    ##方法三:提示element not visible
    sleep(3)
    driver.find_element_by_class_name("btnlogin").click()
    """
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-7-10 10:58
  • 签到天数: 194 天

    连续签到: 1 天

    [LV.7]测试师长

    7#
    发表于 2017-4-20 11:58:30 | 只看该作者
    DD丢丢 发表于 2017-4-19 21:27
    哈哈,谢谢楼主方法可行,但是还有两个疑问:1.为什么只能用sleep+xpath定位才可以识别呢?使用sleep+cla ...

    第一,可能这里implicitly_wait判断的元素不是决定性的那个,第二,is_displayed并不是你要处理的那个按钮的属性啊
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-26 16:41 , Processed in 0.064270 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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