首页 > 编程语言 >[-002-]-Python3+Unittest+Selenium Web UI自动化测试之显示等待WebDriverWait

[-002-]-Python3+Unittest+Selenium Web UI自动化测试之显示等待WebDriverWait

时间:2023-07-05 11:35:30浏览次数:53  
标签:Web driver Unittest 元素 Selenium element until id WebDriverWait

1、WebDriverWait基本用法

引入包

# 文件引入
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
每0.5s定位ID为userid的元素,如果定位成功,执行下面的代码;直至15s超时抛出异常
可用来检查页面元素是否加载完成
# 每0.5s定位ID为userid的元素,如果定位成功,执行下面的代码;直至15s超时抛出异常
# 可用来检查页面元素是否加载完成
WebDriverWait(driver, 15, 0.5).until(EC.presence_of_element_located(By.ID, "id"))

 

until中为条件,直到条件实现,等待结束,否则抛出异常

presence_of_element_located(locator):等待元素出现在DOM中,例如(By.ID,"id")、(By.NAME,"name")
visibility_of_element_located(locator):等待元素在页面中可见,即它不仅存在于DOM中,而且还在视觉上可见
element_to_be_clickable(locator):等待元素可以被点击
text_to_be_present_in_element(locator, text):等待元素中包含特定的文本

2、显示等待高级用法

2.1 alert_is_present():判断页面是否出现alert框

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions


#alert_is_present():判断页面是否出现alert框
res = WebDriverWait(driver,10).until(expected_conditions.alert_is_present())
print(res.text)

2.2 element_located_selection_state_to_be(locator,state):判断一个元素的状态是否是给定的选择状态

第一个传入参数是一个定位器,定位器是一个元组(by,path);第二个传入参数表示期望的元素状态,True表示选中状态,Flase表示未选中

#    element_located_selection_state_to_be():判断一个元素的状态是否是给定的选择状态
res = WebDriverWait(driver,10).until(expected_conditions.element_located_selection_state_to_be((By.ID,'id'),True))

2.3 element_selection_state_to_be(driverObject,state):判断给定的元素是否被选中

第一个传入参数是一个webdriver对象,第二个参数是期望的元素的状态,True表示选中状态,Flase表示未选中

# element_selection_state_to_be():判断给定的元素是否被选中
res = WebDriverWait(driver,10).until(expected_conditions.element_selection_state_to_be((driver.find_element_by_id('id')),True))

2.4 element_located_to_be_selected(locator):期望某个元素处于被选中状态

参数传入的是一个定位器

#element_located_to_be_selected():期望某个元素处于被选中状态
res = WebDriverWait(driver,10).until(expected_conditions.element_located_to_be_selected((By.ID,'id')))

2.5 element_to_be_selected():期望某个元素处于选中状态

传入参数是一个webdriver实例对象

#element_to_be_selected():期望某个元素处于选中状态
res=WebDriverWait(driver,10).until(expected_conditions.element_to_be_selected(driver.find_element_by_id('id')))

2.6 element_to_be_clickable():判断元素是否可见并且能被单击,条件满足返回页面元素对象,否则返回Flase

#element_to_be_clickable():判断元素是否可见并且能被单击,条件满足返回页面元素对象,否则返回Flase
res=WebDriverWait(driver,10).until(expected_conditions.element_to_be_clickable(driver.find_element_by_id('id')))

2.7 frame_to_be_available_and_switch_to_it(parm):判断frame是否可用

如果可用返回True并切入到该frame,参数parm可以是定位器locator(by,path)组成的元组,或者定位方式:id、name、index(frame在页面上索引号),或者webelement对象

#frame_to_be_available_and_switch_to_it():判断frame是否可用
#传入ID值‘id’
res1=WebDriverWait(driver,10,0.2).until(EC.frame_to_be_available_and_switch_to_it(By.ID,'id'))
#传入frame的webelement对象
res2=WebDriverWait(driver,10,0.2).until(EC.frame_to_be_available_and_switch_to_it(driver.find_element_by_id('id')))
#传入frame在页面中索引号
res3=WebDriverWait(driver,10,0.2).until(EC.frame_to_be_available_and_switch_to_it(1))

2.8 invisibility_of_element_located(*locator*):希望某个元素不可见或者不存在DOM中

满足条件返回True,否则返回定位到的元素对象

#invisibility_of_element_located():希望某个元素不可见或者不存在DOM中,满足条件返回True,否则返回定位到的元素对象
res=WebDriverWait(driver,15,0.5).until(EC.invisibility_of_element_located(By.ID,'id'))

2.9 presence_of_all_elements_located(*locator*):判断页面至少有一个如果元素出现,如果满足条件,返回所有满足定位表达式的页面元素

#presence_of_all_elements_located():判断页面至少有一个如果元素出现,如果满足条件,返回所有满足定位表达式的压面元素
res=WebDriverWait(driver,10,0.2).until(EC.presence_of_all_elements_located(By.ID,'id'))

2.10 presence_of_element_located(locator):判断某个元素是否存在DOM中,不一定可见,存在返回该元素对象

#presence_of_element_located():判断某个元素是否存在DOM中,不一定可见,存在返回该元素对象
res=WebDriverWait(driver,10,0.2).until(EC.presence_of_element_located(By.ID,'id'))

2.11 staleness_of(webelement):判断一个元素是否仍在DOM中,如果在规定时间内已经移除返回True,否则返回Flase

#staleness_of():判断一个元素是否仍在DOM中,如果在规定时间内已经移除返回True,否则返回Flase
res=WebDriverWait(driver,10,0.2).until(EC.staleness_of(driver.find_element_by_id('id')))

2.12 text_to_be_present_in_element():判断文本内容test是否出现在某个元素中,判断的是元素的text

#text_to_be_present_in_element():判断文本内容是否出现在某个元素中,判断的是元素的text
res=WebDriverWait(driver,15,0.5).until(EC.text_to_be_present_in_element(By.TAG_NAME,"text"))

2.13 text_to_be_present_in_element_value():判断text是否出现在元素的value属性值中

#text_to_be_present_in_element_value():判断text是否出现在元素的value属性值中
res=WebDriverWait(driver,10,0.2).until(EC.text_to_be_present_in_element_value((By.ID,'id'),'姓名'))

2.14 title_contains():判断页面title标签的内容包含partial_title,只需要部分匹配即可

#title_contains():判断页面title标签的内容包含partial_title,只需要部分匹配即可,包含返回True,不包含返回Flase
res=WebDriverWait(driver,10,0.2).until(EC.title_contains("姓名"))

2.16 title_is():判断页面title内容是与传入的title_text内容完全匹配

#title_is():判断页面title内容是与传入的title_text内容完全匹配,匹配返回True,否则返回Flase
res=WebDriverWait(driver,10,0.2).until(EC.title_is("姓名"))

 

标签:Web,driver,Unittest,元素,Selenium,element,until,id,WebDriverWait
From: https://www.cnblogs.com/chushujin/p/17528082.html

相关文章

  • web js 播放rtsp视频流方案
    场景需要在web端预览海康无线摄像头视频流,所以采用海康自身提供的websdk无法使用方案1rtsp流推送到应用服务器,应用服务器再通过ffmpeg推送到nginx,js再去拉流缺点:多了一层转发,造成了一定的延迟方案2通过webRTC方案,使用现有开源插件webrtc-streamerhttps://github......
  • RunnerGo 新增对WebSocket、dubbo、TCP/IP三种协议的API测试
    大家好,RunnerGo作为一款一站式测试平台不断为用户提供更好的使用体验,最近得知RunnerGo新增对,WebSocket、Dubbo、TCP/IP,三种协议API的测试支持,本篇文章跟大家分享一下使用方法。WebSocket协议WebSocket是一种在单个TCP连接上进行全双工通信的API技术。相比于传统的HTTP......
  • SpringBoot3.0从入门到项目实战:解决Web应用痛点的最新解决方案
    SpringBoot3.0从入门到项目实战:解决Web应用痛点的最新解决方案SpringBoot是当前Java领域中应用最广的框架之一,而随着SpringBoot3.0的发布,它迎来了更加全面和强大的一次升级。本文将深入浅出地介绍SpringBoot3.0的新特性,同时结合实际项目经验,分享Web应用的痛点以及解决方案,帮......
  • FreeWheel基于Go的实践经验漫谈——GC是大坑(关键业务场景不用),web框架尚未统一,和c++性
    Go语言是FreeWheel公司目前主要力推的一个方向,在其看来,面向服务的架构的大环境中,Go非常适合做一些功能相对独立、功能比较明确的微服务的语言。在结合已有的各种编程语言,计算框架(如Hadoop、Java、Ruby、C++)的基础上,FreeWheel把Go语言定位成用来实现轻量级服务或API的缺省编程语言,将......
  • geoserver(内置GeoWebcache)+arcgis瓦片(完整)
    环境:geoserver-2.18.0-bin、geowebcache-1.18.3-war里的gwc-arcgiscache-1.18-SNAPSHOT.jargeoserver下载地址:https://sourceforge.net/projects/geoserver/files/latest/downloadGeoWebcache:https://sourceforge.net/projects/geowebcache/files/geowebcache/1.18.3/geowebcache......
  • webapi中用Quartz(定时任务)的步骤
         文件---新建---项目---ASP.NETWEB应用程序---程序命名---webapiNuget---Quartz(/v2.5)创建要在定时任务中执行的工作内容publicclassRJJob:Ijob创建调度任务(确定执行时间)Global.asax中,加入启动代码:JobScheduler.Start();......
  • GeoWebCache+arcgis紧凑型瓦片
     利用网上下载geowebcache-1.18.3-war+apache-tomcat-9.0.35进行部署并运行GeoWebcache:https://sourceforge.net/projects/geowebcache/files/geowebcache/1.18.3/geowebcache-1.18.3-war.zip/download 1、修改Geowebcache.war中的配置文件,打开geowebcache\WEB-INF\geowe......
  • MQTTnet 创建基于 WebSocket 的 Mqtt 服务器
    MQTTnet.Exceptions.MqttProtocolViolationException:Expectedatleast21540bytesbutthereareonly71bytes使用了错误的协议,mqtt有tcp和ws两种连接协议ws://使用1883端口就能正常连接 ......
  • web开发基础笔录(5)-Javascript(1)
    目录概述概述JavaScript(简称“JS”)是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。虽然它是作为开发Web页面的脚本语言而出名,但是它也被用到了很多非浏览器环境中,JavaScript基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式、声明式、函数式编程范式。......
  • 开发软件 --- java web 容器
    JavaWeb容器是一种运行JavaWeb应用程序的环境,提供对Servlet和JSP等技术的类库支持。以下是一些常见的JavaWeb容器:轻量级 ApacheTomca流行的开源轻量部分支持的javaweb容器。支持Servlet、JSP和WebSocket等技术。Jetty高性能的开源轻量部分支持的java......