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

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

时间:2023-03-07 19:23:52浏览次数:38  
标签:-- driver alert switch UI time sleep 等待 下拉框

UI自动化--下拉框处理和等待机制
一、下拉框处理:网页上的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")

标签:--,driver,alert,switch,UI,time,sleep,等待,下拉框
From: https://www.cnblogs.com/xiaotan66/p/17189282.html

相关文章

  • 关闭引导模式
    我有一个引导程序模式对话框,我想最初显示它,然后当用户单击该页面时,它就会消失。我有以下内容:$(function(){$('#modal').modal(toggle)});<divclass="modal"id='m......
  • 从 JS 日期对象获取 YYYYMMDD 格式的字符串?
    我正在尝试使用JS将a转换dateobject为格式的字符串YYYYMMDD。有没有比连接Date.getYear(),Date.getMonth()和更简单的方法Date.getDay()?解答http://www.st......
  • 自动化测试环境的搭建
    自动化测试环境的搭建:一、安装selenium:安装方式一:    pipinstall-Uselenium安装方式二:手动安装selenium:    1、安装pytho......
  • HTML5 Canvas 与 SVG 与 div
    动态创建元素并能够移动它们的最佳方法是什么?例如,假设我想创建一个矩形、圆形和多边形,然后选择这些对象并将它们四处移动。我知道HTML5提供了三个元素可以使这成为......
  • “x is null”和“x == null”有什么区别?
    在C#7中,我们可以使用if(xisnull)return;代替if(x==null)return;与旧方法相比,使用新方法(前例)有什么优势吗?语义有什么不同吗?这只是品味问题吗?如果不是,我......
  • 在 Java 中解码 Base64 数据
    我有一个Base64编码的图像。在Java中解码它的最佳方法是什么?希望只使用SunJava6中包含的库。解答http://www.stackoverflow.ink/posts/zai-java-zhong-......
  • 返回传递给方法的值
    我在接口上有一个方法:stringDoSomething(stringwhatever);我想用最小起订量模拟它,以便它返回传入的任何内容-类似于:_mock.Setup(theObject=>theObject.D......
  • C# 在PC上的通过蓝牙(bluetooth)发送数据到手机
    C#在PC上的通过蓝牙(bluetooth)发送数据到手机2023-01-2709:32·opendotnet概述在PC端用.NET开发一个蓝牙下载的程序。实现在PC上查找周围的蓝牙设备(主要是手机),并将......
  • Linux - 三剑客(grep awk sed)
    用一些例子加深印象,没事来翻翻。Linux-输入输出重定向及管道符Linux-常用文本编辑命令基础正则^开头$结尾[]表示区间,[^}]表示除大括号之外的数据,到大括......
  • web界面的HMI/SCADA组态
    web界面的HMI/SCADA组态2022-12-0207:39·程序员修仙之路一、项目简介今天要说的是一个web界面的HMI/SCADA组态,支持各种图形,支持拖拽,支持放缩。大致流程是,通过拖拽控件......