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

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

时间:2023-03-02 19:58:34浏览次数:34  
标签:-- 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/doudouzizi/p/17173138.html

相关文章

  • 每日总结(9)
    所用时间:晚上两小时代码:博客:2知识点:登录页面的搭建;登录功能的实现;忘记密码页面跳转;忘记密码页面功能实现;验证码生成;       ......
  • 一文吃透 Go 内置 RPC 原理
    hello大家好呀,我是小楼,这是系列文《Go底层原理剖析》的第三篇,依旧分析Http模块。我们今天来看Go内置的RPC。说起RPC大家想到的一般是框架,Go作为编程语言竟然还内置......
  • 路飞
    今日内容1.git多分支2.git远程仓库3.ssh方式连接远程仓库4.协同开发5.冲突解决6.线上分支合并7.远程仓库回滚1.git多分支#为什么要有分支 -可以保证,主分支的版......
  • mysql索引结构
    Mysql索引是在存储引擎层实现的,不同的存储引擎有不同的结构,主要包括以下几种:B+Tree索引:最常见的索引结构,大部分存储引擎都支持B+Tree索引。Hash索引:底层数据结构是用Hash......
  • git常用命令教程
    补充requirements.txt的生成方式第一种方法是,在终端窗口输入pipfreeze>requirements.txtpipinstall-rrequirements.txt#一键安装所有依赖git常用指令指......
  • 对于架构相关书籍的读后感
    今天在课上阅读了老师所给的几本书籍,其中对于《大型网站技术架构:核心原理与案例分析》这部书阅读最为详细。此书从多个层面说明了如何构建一个高可用、高性能,高可扩展性的......
  • 登录页面练习
    主页面1<?xmlversion="1.0"encoding="utf-8"?>2<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"3android:layout_width="m......
  • LeedCode 85. 最大矩形(/)
    原题解题目约束题解解法一classSolution{public:intmaximalRectangle(vector<vector<char>>&matrix){intm=matrix.size();if......
  • 跨服务传递ThreadLocal解决方案
    通常情况下,我们会将登录用户的相关信息,存放到threadLocal当中,以便于我们在代码中获取用户信息,但是threadLocal的数据只存在于当前请求线程中,对于分布式微服务场景,如......
  • 今日报告
    //增packagecom.test.dao;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.SQLException;importcom.test.jdbc.DBConnection;im......