首页 > 其他分享 >UI自动化--下拉框处理和等待机制

UI自动化--下拉框处理和等待机制

时间:2023-03-13 18:45:01浏览次数:22  
标签:-- driver alert switch UI time sleep element 下拉框

一、下拉框处理:

网页上的js弹出框一般有三种情况,且识别不了元素,需要使用switch_to.alert() 进行跳转

 

 

 

 情况一:

 这时候需要先跳转到此弹窗,才能做到自动化点击确定:

driver.find_element(By.XPATH,"//input[@name='alterbutton']").click()     #切换到弹出框进行处理
time.sleep(2)
value=driver.switch_to.alert.text #获取弹窗文本内容
driver.switch_to.alert.accept() #点击确定按钮
time.sleep(2)
print(value)

这里的time.sleep 是固定等待,为了更好地看到效果


情况二:

 

 这类弹窗需要先跳转到弹窗,然后输入内容,再点击确定  ;或者取消

 

driver.find_element(By.XPATH,"//input[@name='promptbutton']").click()    
time.sleep(2)
driver.switch_to.alert.send_keys("hello") #输入内容
time.sleep(2)
driver.switch_to.alert.accept()   #点确定
time.sleep(2)
driver.switch_to.alert.accept() #再次点确定
time.sleep(2)



情况三:

 

 这类弹窗需要先跳转到弹窗,点击确定  或者点击取消

driver.find_element(By.XPATH,"//input[@name='confirmbutton']").click()
time.sleep(2)
driver.switch_to.alert.dismiss() # 点击取消
time.sleep(2)
driver.switch_to.alert.accept() #点击确定
time.sleep(2)

二、等待机制

在实际的UI自动化测试过程中,会出现各种突发情况,比如  网络通讯不畅、电脑卡顿等,都会出现 界面元素加载国棉的场景,此时会导致原本正常的自动化脚本出现  报错等问题,此时为了增加脚本的稳定性,就要引入等待操作

 1.固定等待

time.sleep(10)         #参数值填写10,就固定等待10秒

优点:简单方便

缺点:时间是设置固定的,很容易出现失效等问题

 

2.隐式等待

隐式等待是一个全局设置,针对所有的 find——element 都生效

工作机制:每隔0.5秒扫描一次页面,检查是否出现元素,如果出现则立即执行后续的代码,如果等到设置的时间,如100秒,还是没有检测到,则报错

driver.implicitly_wait(1000)       #参数值填写1000秒,就等待1000秒,每隔0.5秒扫描一次页面

 

3.显式等待

显式等待针对单个元素生效,一般用于自动化测试框架中。工作机制和隐式等待一样,只不过扫描间隔时间可以自定义,默认是0.5秒

element=WebDriverWait(driver,100,poll_frequency=0.3).until(lambda dr:dr.find_element(By.XPATH,"//div"))
value = driver.find_element(By.XPATH,"//div").get_attribute("class")
print( value)

标签:--,driver,alert,switch,UI,time,sleep,element,下拉框
From: https://www.cnblogs.com/zhousha/p/17212464.html

相关文章

  • 3月10日课后总结
    3/10课后总结random模块importrandomprint(random.random())#产生一个0-1之间的随机数注意会是小数print(random.uniform(1,5))#产生1-5之间的随机数,会是小......
  • 2023/3/13结对总结
    设计思路:1.创建两个表 <1>第一个:存储所有车站信息: (1)车站唯一标识: (2)线路号:number (3)车站名:station (4)车站所在线路标识号:characte......
  • 吴恩达机器学习ex1 python实现
     这个项目包含了吴恩达机器学习ex1的python实现,主要知识点为线性回归,题目内容可以查看数据集中的ex1.pdf代码来自网络(原作者黄广海的github),添加了部分对于题意的中......
  • java基础-排序算法&&二维数组
    1、冒泡排序--升序原理:每次比较相邻两数小的交换到前面每轮结束后最大的数交换到最后口诀:冒泡排序速记口诀(升序)n个数字来排队......
  • JavaScript作用域闭包(你不知道的JavaScript)
    JavaScript闭包,是JS开发工程师必须深入了解的知识。3月份自己曾撰写博客《​​JavaScript闭包​​》,博客中只是简单阐述了闭包的工作过程和列举了几个示例,并没有去刨根问底,......
  • 企业级无代码用做应急手段处理应急管理需求
    应急管理大到国家部委、省市级应急调控,小到社区、乡镇、园区等安全防控,承担着全体社会、人民的安全保障。基于企业级无代码构建的园区消防应急管理系统,实现主动化、全时段的......
  • curl命令
    curl是一种命令行工具,支持多种协议,作用是发出网络请求,然后得到和提取数据,显示在stdout上面。在服务器端,使用curl查看请求地址是否返回数据来判断是nginx配置问题还是程序服......
  • JavaScript词法作用域(你不知道的JavaScript)
    JavaScript并不是传统的块级作用域,而是函数作用域!一、作用域1.JavaScript引擎在代码执行前会对其进行编译,在这个过程中,像vara=2这样的声明会被分解成两个独立的步骤:......
  • 查看程序占用tomcat内存情况
    最近,公司线上tomcat经常无缘无辜宕机,总结了一下定位问题的方法,仅供参考:报错信息:Maximumnumberofthreads(200)createdforconnectorwithaddressnullandport9443#......
  • 行转列
    SELECT*from(SELECTid,seq,SUBSTRING_INDEX(SUBSTRING_INDEX(idList,';',seq),';',-1)idListFROM(SELECT@rownum:=@rownum+1ASseqFROM(SELECT@rownum:=......