前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >web自动化07-元素等待

web自动化07-元素等待

作者头像
似小陈吖
发布2023-10-17 09:55:56
1380
发布2023-10-17 09:55:56
举报
文章被收录于专栏:测试那些事

元素等待

1、什么是元素等待?

    在定位页面元素时如果没找到,会在指定时间内一直等待的过程

2、为什么需要元素等待

  •  网络速度慢
  •  电脑配置低
  •  服务器处理请求慢

3、三种元素等待类型

    强制等待

    隐式等待

    显式等待

4、隐式等待

        概念: 定位元素时,如果能定位到元素则直接返回该元素,不触发等待; 

                    如果不能定位到该元素,则间隔一段时间后再去定位元素; 

                    如果在达到最大时长时还没有找到指定元素(无法控制时间),则抛出元素不存在的异常 NoSuchElementException 

        实现方式:

            方法:driver.implicitly_wait(timeout)

                        (timeout:为等待最大时长,单位:秒)

                    说明:隐式等待为全局设置(只需要设置一次,就会作用于所有元素)

        注意:1、隐式等待是全局有效,只需要设置一次就行

                  2、当隐式等待被激活时,虽然目标元素出现了,但是当前页面的其他元素未加载完成,而继续等待,增加代码的执行时长

5、显式等待

        概念:定位指定元素时,如果能定位到元素则直接返回该元素,不触发等待; 

                   如果不能定位到该元素,则间隔一段时间后再去定位元素;

                   如果在达到最大时长时还没有找到指定元素,则抛出超 时异常 TimeoutException 。

代码语言:javascript
复制
1. 导包 等待类 --> from selenium.webdriver.support.wait import WebDriverWait
2. WebDriverWait(driver, timeout, poll_frequency=0.5)
    1). driver:浏览器驱动对象
    2). timeout:超时的时长,单位:秒
    3). poll_frequency:检测间隔时间,默认为0.5秒
3. 调用方法 until(method):直到...时
    1). method:函数名称,该函数用来实现对元素的定位
    2). 一般使用匿名函数来实现:lambda x: x.find_element_by_id("userA")
4. element = WebDriverWait(driver, 10, 1).until(lambda x: x.find_element_by_id("userA")
)

实例代码:

代码语言:javascript
复制
import time
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
driver = webdriver.Firefox()
driver.get("file:///D:/webAutoTest/page/注册A.html")
element = WebDriverWait(driver, 10, 1).until(lambda x: x.find_element_by_id("userA"))
element.send_keys("admin")
time.sleep(3)
driver.quit()

显式等待和隐式等待区别:

  1.     隐式等待为全局元素,显式等待为单个元素有效
  2.     隐式等待直接通过驱动对象调用,显式等待方法封装在WebDriverWait类中
  3.     达到最大超时时长后抛出的异常不同:隐式为NoSuchElementException,显式等待为TimeoutException

 6、强制等待

 sleep()

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 元素等待
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档