【python-web-ui自动化测试记录(二)】find_elements(获取多个元素),设置元素等待

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

1,怎么定位多个元素
2,设置元素等待


提示:以下是本篇文章正文内容,下面案例可供参考

一、find_elements(获取多个元素,返回list)

示例:想要一次定位到所有菜单栏

  1. 先找到菜单栏父级ul标签
    检查菜单栏元素
  2. 复制selector,得到 “#menu_global”
    在这里插入图片描述
  3. 继续找到 ul下的li下a标签,表达式:“#menu_global > li > a:nth-child(1)”
    menu_global 下有多少复合 li > a:nth-child(1)表达式的元素,就能定位到多少个
# 定位多个元素
eles = driver.find_elements(By.CSS_SELECTOR, "#menu_global > li > a:nth-child(1)")
time.sleep(1)
#print(eles[1].text)
# find_elements返回的是list,(这里只演示定位多个元素后,提取文本信息)
for i in eles:
    print(i.text)
# 关闭浏览器
driver.quit()

运行结果
运行结果

二、设置元素等待

分析: 主要解决代码执行方面,元素加载导致找不到的问题

  1. time.sleep() 固定等待时间,比较机械

  2. driver.implicitly_wait(10) 设置10s
    解释:隐式等待

    		1. 只需声明一次,对其后面的每一行元素定位都生效
    		2. 一般创建浏览器对象后就声明
    		3. 代码执行后每隔0.5s查找一次,找到后就继续执行后续代码
    		4. 若达到设置的最大时间后,未找到元素,抛出 timeout 异常
    		5. 必须要等页面全部加载完成,浪费时间(相对而言)
    
  3. WebDriverWait(driver, 10, 1)
    解释:显式等待

    		1. 传入浏览器对象,最大等待时间,轮询时间
    		2. from selenium.webdriver.support import expected_conditions as ec  # 提供等待条件
    		3. from selenium.webdriver.support.ui import WebDriverWait # 显示等待类
    		4. 只对设置的元素生效
    		5. until里设置条件
    		6. 若达到设置的最大时间后,未找到元素,抛出 timeout 异常
    
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as ec  # 提供等待条件
from selenium.webdriver.support.ui import WebDriverWait # 显示等待类


driver = webdriver.Chrome()
# 返回的就是你要定位的元素
ele = WebDriverWait(driver, 10, 1).until(
   ec.visibility_of_element_located(
   (By.ID, "header_global")
   )
)
备注:一般使用习惯
  1. 声明一个隐式等待,全局通用
  2. 对于一些加载慢的元素,设置显示等待

总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值