首页 > 其他分享 >UI自动化测试|下拉选择框&弹出框&滚动条操作实践

UI自动化测试|下拉选择框&弹出框&滚动条操作实践

时间:2024-11-28 13:59:02浏览次数:8  
标签:文本 driver alert 滚动条 弹出 UI element select

前言

UI测试,也称为用户界面测试,是一种测试类型,旨在检查应用程序的界面是否工作正常,以及是否存在任何妨碍用户行为且不符合书面规格的BUG。UI自动化测试则是利用自动化工具来执行这些测试,以提高测试效率和准确性.

这里分享下拉选择框&弹出框&滚动条操作实践

01下拉框操作

在 UI 自动化中,操作下拉选择框可以通过以下步骤进行:

1)定位下拉选择框元素:通过适当的元素定位方法,找到下拉选择框的元素。

2)打开下拉框:例如通过点击(.click)来操作下拉框元素打开下拉框。

3)选择选项:可以通过以下几种方式选择下拉框中的选项:

  • 根据索引选择:确定要选择的选项的索引位置,选择对应索引的选项。

  • 根据文本选择:如果选项具有可识别的文本,可以通过文本内容来选择对应的选项。

  • 根据值选择:如果选项具有特定的值,可以通过值来选择对应的选项。

下拉选择实现步骤:

  • 1、导入Select类 (S为大写)

  • 2、实例化select对象 select=Select(element)

图片

3、通过select的相关方法选择option选项

select.select_by_index(index) 参数index表示的option索引

图片

select.select_by_value(value) 参数value表示的是option元素中value的属性值

图片

select.select_by_visible_text(visible_text ) 参数visible_text表示的是option的文本内容

图片

代码示例:

# 导包import timefrom selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.select import Select # 实例化浏览器驱动driver = webdriver.Chrome()driver.maximize_window() # 打开hao123网站driver.get("https://www.hao123.com")time.sleep(3) # 点击「切换」城市按钮,进入选择城市下拉框element = driver.find_element_by_css_selector("[monkey='weather']")element.click() # 定位到城市下拉框所在的元素element = driver.find_element(By.CSS_SELECTOR, "[name='province']")select = Select(element) # 通过select对象的index来选择北京time.sleep(3)select.select_by_index(0) # 通过select对象的value来选择上海time.sleep(3)select.select_by_value("02") # 通过select对象的文本内容来选择天津time.sleep(3)select.select_by_visible_text("T 天津") # 等待3Stime.sleep(3) # 退出浏览器驱动driver.quit()

02弹框操作

1)一般弹出框操作

在 UI 自动化中,处理弹出框操作可以通过以下步骤进行:

1.等待弹出框出现:使用适当的等待机制,等待弹出框出现。这可以确保在执行操作之前弹出框已经显示在界面上。

2.定位弹出框元素:使用元素定位方法找到弹出框的相关元素,例如标题、按钮等。

3.操作弹出框:根据具体的需求,进行以下操作:

  • 填写文本:如果弹出框需要输入文本,可以找到相应的输入元素并填入文本。

  • 点击按钮:如果弹出框有确定、取消等按钮,使用点击操作方法点击相应的按钮。

  • 验证弹出框内容:根据需要,验证弹出框中的文本、选项等是否符合预期。

代码示例:

# 导包import timefrom selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.common.keys import Keys # 实例化浏览器驱动 driver = webdriver.Chrome()driver.maximize_window() # 打开baidu网站driver.get("https://www.baidu.com") # 点击页面右上角【登录】按钮,进入登录页面driver.find_element(By.ID, "s-top-loginbtn").click() # 点击微信图标,弹出微信扫码登录弹窗time.sleep(3)element = driver.find_element_by_css_selector("[title='微信']")element.click() # 执行其他操作……,等待3Stime.sleep(3) # 退出浏览器驱动driver.quit()

2) 警告弹出框操作

警告弹出框操作步骤:

1.定位到到包含弹出警告框的页面

2.触发警告框出现

3.使用 driver.switch_to.alert 

 切换到警告框:通过调用 driver.switch_to.alert(),将控制权切换到弹出的警告框。

4.与警告框进行交互:

  • 接受警告框:使用 alert.accept() 方法来接受警告框。

  • 取消警告框:使用 alert.dismiss() 方法来取消警告框。

  • 获取提示信息:使用 alert.text 获取弹出框文本提示信息。

  • 输入文本:如果警告框需要输入文本,可以使用 alert.send_keys("文本内容") 方法将文本输入到警告框中。

代码示例:​​​​​​​

# 导包from selenium import webdriver # 实例化浏览器驱动driver = webdriver.Chrome() # 导航到目标页面driver.get("https://example") # 点击测试图标,弹出警告框element = driver.find_element_by_id("example")element.click() # 获取弹出框对象alert = driver.switch_to.alert() # 处理警告框if alert:    alert.accept()  # 接受警告框    # 或者    alert.dismiss()  # 取消警告框    # 或者    alert.text()   # 获取警告框信息 # alert.text 也可以    # 或者    alert.send_keys("自定义文本")  # 输入文本到警告框 # 执行其他操作 # 退出浏览器驱动driver.quit()

03滚动操作

在 UI 自动化中,实现滚动条操作可以通过以下几种常见的方法:

1.使用元素坐标:通过获取滚动条的坐标位置,然后设置元素的位置来实现滚动。可以使用自动化工具提供的元素定位和操作方法,例如WebDriver中的moveToElement或scrollTo方法。

2.使用滚动方法:Selenium自动化工具提供了专门的滚动方法,例如WebDriver中的scrollBy或scrollToElement方法。这些方法可以指定滚动的方向和距离。

3.模拟鼠标滚动:通过模拟鼠标滚轮的滚动操作来实现滚动条的滚动。可以使用鼠标操作方法,例如发送鼠标滚轮滚动事件。

4.等待滚动完成:在执行滚动操作后,需要等待页面加载完成或滚动操作完成。可以使用等待条件或超时设置来确保滚动操作完成后再进行后续操作。

示例:

1、定义js

js = "window.scrollTo(0, 2000)" # 如果想要移动到最下方,y值给最大值就可以实现

2、执行JS

driver.execute_script(js)​​​​​​​

# 导包import timefrom selenium import webdriver # 实例化浏览器驱动driver = webdriver.Chrome()driver.maximize_window() # 打开hao123网站driver.get("https://www.hao123.com") # 控制滚动条滚向下方滚动# 定义js js = "window.scrollTo(0, 2000)" # 执行JSdriver.execute_script(js) # 等待3Stime.sleep(3) # 退出浏览器驱动driver.quit()

标签:文本,driver,alert,滚动条,弹出,UI,element,select
From: https://blog.csdn.net/m0_60889254/article/details/144088866

相关文章

  • vxe-table 表格中使用 element-ui 组件库的
    在公司开发大型项目中,使用主流表格库vxe-table和element-ui组件库,可以在可编辑单元格中渲染非常简单的使用更多的组件官网:https://vxetable.cn安装npminstallvxe-pc-ui@3.3.9vxe-table@3.11.10@vxe-ui/plugin-render-element@3.0.0//...import{VxeUI}from'vxe......
  • LVGL UI设计神器anyui之高阶组件
    破炉而出——LVGLUI设计神器anyui之高阶组件孙悟空吃了大量的巧克力豆后,在太上老君的炼丹炉中憋了七七四十九天,最终破炉而出,练就了火眼金睛,继七十二变和筋斗云之后第三大本领,省去了取经路上无数麻烦。试想如果没有孙悟空的火眼金睛,唐僧被抓走的次数得翻几番。可见,好的装......
  • Brduino脑机连载(二十一)基于Brduino实现脑控无人机(简略步骤)
    在当今科技飞速发展的时代,脑机接口(Brain-ComputerInterface,BCI)技术作为一项极具创新性和前瞻性的领域,正逐渐改变着我们与机器的交互方式。其中,基于稳态视觉诱发电位(SSVEP)的脑控无人机技术更是吸引了众多科研人员和科技爱好者的目光。今天,我们将深入探讨如何基于Brduino实现......
  • Brduino脑机连载(二十)推荐了解-Brduino脑机开发模组介绍
    Brduino:脑机学习/开发平台在脑机接口(Brain-ComputerInterface,BCI)技术蓬勃发展的浪潮中,Brduino作为一款具有广泛影响力的脑机学习开发板(前身为BCIduino脑机模组(点击查看),我们做了改良之后重新发布(点击查看)),为科研人员、开发者以及爱好者提供了一个强大且灵活的工具,助力他们......
  • 基于Arduino Uno的温湿度传感器设计
    目录一、Arduinonano(一)PIN分析(二)Blink程序(Arduino基本程序)分析二、HIGH和LOW引脚的两种状态辨析三、UNO四、接线图五、代码部分Version1—-单显示屏(LCD1602AGeneral)Version2—-双显示屏方案(LCD1602AI2C+LCD1602AGeneral)五、IOT物联网方案(Esp8266实......
  • CODEIP: A Grammar-Guided Multi-Bit Watermark for Large Language Models of Code
    本文是LLM系列文章,针对《CODEIP:AGrammar-GuidedMulti-BitWatermarkforLargeLanguageModelsofCode》的翻译。CODEIP:用于大型代码语言模型的语法引导多位水印摘要1引言2前言3CODEIP4实验设置5结果与分析6相关工作7结论8局限性摘要随着大......
  • DynoEquip 变速器和减速器试验台
    创新减速器试验台:助力电气化动力系统和变速器开发电子邮箱: info@DynoEquip.com当代动力传动系统的电气化程度不断提高,这对仪器和测试系统的要求产生了重大影响。随着汽车行业向电气化动力系统转变,工程师们在确保所有组件无缝协作方面面临着新的挑战。这种转变要求进行早......
  • DynoEquip 电驱动总成和电驱桥试验台
    高效电驱桥试验台:优化集成或三合一电驱动总成性能电子邮箱: info@DynoEquip.com燃料电池电动汽车(FCEV)和电池电动汽车(BEV)在很大程度上都依赖于电力驱动,特别是作为这些车辆主要推进力来源的电力驱动装置。将电驱动总成与传动系统集成到电驱桥子系统中具有显著优势,包括提高......
  • DynoEquip 轴耦合动力总成试验台
    创新轴耦合动力总成试验台:移动式转毂连接,ADAS测试电子邮箱: info@DynoEquip.com原始设备制造商和供应商正在积极开发用于创新电动汽车(EV)动力总成系统概念的系统和部件。从历史上看,这些开发背后的主要驱动力是传动设计,包括两轮驱动(2WD)和四轮驱动(4WD)动力系统中使用的手动......
  • 如何用css自定义滚动条?能做到所有浏览器兼容吗?想要做兼容怎么办呢?
    CSS可以自定义滚动条的样式,但是无法做到所有浏览器完全兼容。不同浏览器对滚动条样式的支持程度不同,特别是老版本浏览器。以下是如何使用CSS自定义滚动条,以及提高兼容性的方法:1.基本样式自定义(WebKit内核浏览器,例如Chrome,Safari,Edge等):::-webkit-scrollbar{w......