51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2357|回复: 2
打印 上一主题 下一主题

【求解】python+selenium显性等待和强制等待问题?

[复制链接]
  • TA的每日心情
    无聊
    2018-5-10 09:16
  • 签到天数: 172 天

    连续签到: 2 天

    [LV.7]测试师长

    跳转到指定楼层
    1#
    发表于 2017-3-14 15:33:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    为什么我黄色部分代码已经加了显性等待了,每次执行到这还是报错?
    当我加上紫色部分的强制等待3秒就可以了,显性等待和强制等待实际分别适用瑜那些地方呢?


    def TimeWait(driver,time,element):#显性时间等待
        return WebDriverWait(driver,time).until(element)


    #切到投票页面  TimeWait(driver,10,lambda driver:driver.find_element_by_xpath('//div[@class="fg-nav-li"]')).click()
    #输入票数量   driver.find_element_by_xpath('//input[@id="sy_giftnum"]').send_keys('1')
    #点击投票      driver.find_element_by_xpath('//span[@id="sy_vote"]').click()
                          print('投票后积分:'+number.text)
                          time.sleep(2)  #投票成功会弹出悬浮提示故需要强制等2秒,截图才能截到,要不然截不到悬浮提示
                         driver.get_screenshot_as_file("e:\\toupiao.jpg")#投票成功截图
    time.sleep(3)
    #关闭按钮    TimeWait(driver,10,lambda driver:driver.find_element_by_xpath('html/body/div[1]/div/div[1]/i')).click()
    driver.switch_to.default_content()

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

    使用道具 举报

  • TA的每日心情
    慵懒
    2017-11-7 16:44
  • 签到天数: 290 天

    连续签到: 1 天

    [LV.8]测试军长

    2#
    发表于 2017-3-14 16:25:28 | 只看该作者
    【个人理解,仅供参考】

    通常来说,这两种方式比较少用,隐式等待更为常用:     

    (1)隐式等待:当使用了隐式等待执行测试的时候,如果 WebDriver没有在 DOM中找到元素,将继续等待,但只要页面加载完成则往下执行(灵活),
    而超出设定时间后则抛出找不到元素的异常,隐性等待对整个driver的周期都起作用,所以只要设置一次即可

    【弊端】:那就是程序会一直等待整个页面加载完成,也就是一般情况下只有浏览器标签栏那个小圈不再转,
    才会执行下一步,但有时候页面想要的元素早就在加载完成了,但是因为个别js之类的东西特别慢,仍得等到页面全部完成才能执行下一步;

    (2)time.sleep强制等待:基本不用,一般切换页面或打开新页面,象征性地用一下,增加稳定性(个人感觉)。还有调试脚本的时候也会用一下

    (3)显示等待WebDriverWait():webdriver的针对某个元素的明确等待,在给定的时间内去查找元素,如果没找到则超时,抛出异常
    适用场合:当页面加载很慢时,推荐使用显示等待:等到需要操作的那个元素加载成功之后就直接操作这个元素,不需要等待其他元素的加载,弥补隐式等待的不足

    ( 隐性等待和显性等待可以同时用,注意:等待的最长时间取两者之中的大者)

    评分

    参与人数 1测试积点 +10 收起 理由
    lsekfe + 10 积极回复获得测试积点10 赶快去商城换取奖.

    查看全部评分

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2018-5-10 09:16
  • 签到天数: 172 天

    连续签到: 2 天

    [LV.7]测试师长

    3#
     楼主| 发表于 2017-3-14 18:06:17 | 只看该作者
    若尘_51 发表于 2017-3-14 16:25
    【个人理解,仅供参考】

    通常来说,这两种方式比较少用,隐式等待更为常用:     

    谢谢   若尘_51
    恩 我大概知道3者的区别了
    但是我看视频都是重点讲的:显示等待WebDriverWait(),而且问了好几个人都说这个常用点,我觉得针对不同的场景采用不用

    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-26 21:00 , Processed in 0.070379 second(s), 25 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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