当前位置: 首页 > news >正文

从 0 到 1 搭建 Python 语言 Web UI自动化测试学习系列 7--基础知识 3--常用函数 1

测试学习记录,仅供参考!

常用的函数

掌握下拉菜单、单选、警告框、进度条拖动定位技巧,模拟鼠标、键盘等一系列操作(右击、拖拽、滚动)

一些常用的函数,因为要学习 web 自动化测试,得先把这些基础知识学会,后面写框架元素定位的时候,均是基于基础去做的,所有先学好基础;掌握下拉菜单、警告框定位技巧;

1、在项目根目录下新建一个名称为 functions.py 的 Python 文件;

一、浏览器实例化

2、第一个 最基本的一个函数,浏览器实例化,创建一个特定的浏览器实例 webdriver,然后把这个实例给返回出去给 driver 这个对象,后面所有的操作均是基于创建浏览器这个实例的对象去操作的;

# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By# webDriver初始化
# driver = webdriver.Chrome()
driver = webdriver.Edge()

二、页面导航

3、第二个是 页面的导航,要去操作哪一个页面,基于浏览器创建的实例 driver ,然后去 get 获取到一个页面;

# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By# webDriver初始化
# driver = webdriver.Chrome()
driver = webdriver.Edge()# 页面导航
driver.get('http://localhost:8088/ecshop/user.php?act=register')

三、窗口最大化、最小化

# 窗口最大化
driver.maximize_window()
# 窗口最小化
driver.minimize_window()

四、查找元素

4、查找元素;

# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By# webDriver初始化
# driver = webdriver.Chrome()
driver = webdriver.Edge()# 页面导航
driver.get('http://localhost:8088/ecshop/user.php?act=register')# 窗口最大化
driver.maximize_window()
# 窗口最小化
# driver.minimize_window()# 查找元素
driver.find_element(By.ID, 'username')

五、与页面元素交互

5、与页面元素交互,在网页上执行各种操作(模拟手工的一系列操作);

输入操作

6、 第一个 输入的操作,调用 send_keys('xxxx') 里面输入内容,比较常见的输入文本函数;

# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep# webDriver初始化
# driver = webdriver.Chrome()
driver = webdriver.Edge()# 页面导航
driver.get('http://localhost:8088/ecshop/user.php?act=register')# 窗口最大化
driver.maximize_window()
# 窗口最小化
# driver.minimize_window()# 查找元素
driver.find_element(By.ID, 'username')# 与页面元素交互,在网页上执行各种操作
# 第一个、输入文本函数
driver.find_element(By.NAME, 'email').send_keys('1234567@163.com')#页面等待3秒
sleep(3)
# 关闭实例化浏览器
driver.quit()

7、 执行 functions.py 文件查看结果;

单击操作

8、第二个 单击的操作,调用 click() 函数,其他双击、右键单击等自行了解;

# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep# webDriver初始化
# driver = webdriver.Chrome()
driver = webdriver.Edge()# 页面导航
driver.get('http://localhost:8088/ecshop/user.php?act=register')# 窗口最大化
driver.maximize_window()
# 窗口最小化
# driver.minimize_window()# 查找元素
driver.find_element(By.ID, 'username')# 与页面元素交互,在网页上执行各种操作
# 第一个、输入文本函数
driver.find_element(By.NAME, 'email').send_keys('1234567@163.com')
# 第二个、单击函数
driver.find_element(By.XPATH, '//input[@name="Submit"]').click()#页面等待3秒
sleep(3)
# 关闭实例化浏览器
driver.quit()

以’立即注册‘按钮为例;

六、警告框处理

9、 在测试 web 系统的时候,会经常遇到很多种 JS 弹窗,得把弹出的对话框关闭才能继续操作;

# 警告框的处理
# 使用 driver 对象 调用 switch_to 方法,然后在 .(点) 调用alert方法
alert = driver.switch_to.alert
# 用返回的对象 alert 去调用 accept() 来关闭弹窗
alert.accept()

优化functions.py 文件;

# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from time import sleep# webDriver初始化
# driver = webdriver.Chrome()
driver = webdriver.Edge()# 页面导航
driver.get('http://localhost:8088/ecshop/user.php?act=register')# 窗口最大化
driver.maximize_window()
# 窗口最小化
# driver.minimize_window()# 查找元素
driver.find_element(By.ID, 'username')# 与页面元素交互,在网页上执行各种操作
# 第一个、输入文本函数 send_keys()
driver.find_element(By.NAME, 'email').send_keys('1234567@163.com')
# 第二个、单击函数 click()
driver.find_element(By.XPATH, '//input[@name="Submit"]').click()# 警告框的处理
# 使用 driver 对象 调用 switch_to 方法,然后在 .(点) 调用alert方法
alert = driver.switch_to.alert
# 添加等待时间,否则关闭处理很快,看不到效果
sleep(2)
# 用返回的对象 alert 去调用 accept() 来关闭弹窗
alert.accept()# 页面等待3秒
sleep(3)
# 关闭实例化浏览器
driver.quit()

七、下拉选择框处理

10、第三个 下拉选择框的处理,在用到下拉框的时候,需要导入 selenium 里面的一个 Select 类,这个类是专门用来处理下拉菜单的选择;

from selenium.webdriver.support.ui import Select

11、 因为要操作下拉选择框,所以先定位到这个下拉框,以‘密码提示问题’下拉选择框为例;

12、 定位到元素后可以看到它是一个组件的形式,select 下面有许多种选项,首先得把最外层的 select 给定位到,可以看到这个标签只有一个 name 属性,使用 NAME(根据标签里面有什么属性) 定位,这时候需要返回出去给 ele (自定义);

ele = driver.find_element(By.NAME, 'sel_question')

13、 然后调用刚刚导入的下拉框选择处理的这个 Select 类,把定位到的这个元素 ele 传给它 Select(ele),再返回出去给 sel = Select(ele),此时已经定位到下拉框选择的这个层级;亦可以优化直接写在 Select() 里面;

# 下拉框的处理
ele = driver.find_element(By.NAME, 'sel_question')
sel = Select(ele)
# 优化
sel = Select(driver.find_element(By.NAME, 'sel_question'))

14、 此时可以用 sel . 点 之后可以看到里面有很多种方法;

选择下拉选项

15、 怎么去选中下拉框选项,调用 select 方法可以选中下拉框选项;

通过索引

16、 第一种、通过索引去定位;

# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from time import sleep# webDriver初始化
# driver = webdriver.Chrome()
driver = webdriver.Edge()# 页面导航
driver.get('http://localhost:8088/ecshop/user.php?act=register')# 窗口最大化
driver.maximize_window()
# 窗口最小化
# driver.minimize_window()# 查找元素
driver.find_element(By.ID, 'username')# 与页面元素交互,在网页上执行各种操作
# 第一个、输入文本函数 send_keys()
driver.find_element(By.NAME, 'email').send_keys('1234567@163.com')
# 第二个、单击函数 click()
driver.find_element(By.XPATH, '//input[@name="Submit"]').click()# 警告框的处理
# 使用 driver 对象 调用 switch_to 方法,然后在 .(点) 调用alert方法
alert = driver.switch_to.alert
# 添加等待时间,否则关闭处理很快,看不到效果
sleep(2)
# 用返回的对象 alert 去调用 accept() 来关闭弹窗
alert.accept()# 下拉框的处理
ele = driver.find_element(By.NAME, 'sel_question')
sel = Select(ele)
# 通过下拉选项的索引去获取(索引从0开始)
sel.select_by_index(3)#页面等待3秒
sleep(3)
# 关闭实例化浏览器
driver.quit()

17、 执行 functions.py 文件查看结果 能不能选到‘我的座右铭是?’;

通过 value 值

18、 第二种、通过下拉选项每一个标签名的 value 值去定位;

# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from time import sleep# webDriver初始化
# driver = webdriver.Chrome()
driver = webdriver.Edge()# 页面导航
driver.get('http://localhost:8088/ecshop/user.php?act=register')# 窗口最大化
driver.maximize_window()
# 窗口最小化
# driver.minimize_window()# 查找元素
driver.find_element(By.ID, 'username')# 与页面元素交互,在网页上执行各种操作
# 第一个、输入文本函数 send_keys()
driver.find_element(By.NAME, 'email').send_keys('1234567@163.com')
# 第二个、单击函数 click()
driver.find_element(By.XPATH, '//input[@name="Submit"]').click()# 警告框的处理
# 使用 driver 对象 调用 switch_to 方法,然后在 .(点) 调用alert方法
alert = driver.switch_to.alert
# 添加等待时间,否则关闭处理很快,看不到效果
sleep(2)
# 用返回的对象 alert 去调用 accept() 来关闭弹窗
alert.accept()# 下拉框的处理
ele = driver.find_element(By.NAME, 'sel_question')
sel = Select(ele)
# 通过下拉选项的索引去获取(索引从0开始)
# sel.select_by_index(3)
# 通过下拉选项标签的value值定位
sel.select_by_value('favorite_movie')# 页面等待3秒
sleep(3)
# 关闭实例化浏览器
driver.quit()
通过文本

19、 第三种、通过下拉选项标签的文本内容去定位,注意文本内容的完整,否则报错;

# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from time import sleep# webDriver初始化
# driver = webdriver.Chrome()
driver = webdriver.Edge()# 页面导航
driver.get('http://localhost:8088/ecshop/user.php?act=register')# 窗口最大化
driver.maximize_window()
# 窗口最小化
# driver.minimize_window()# 查找元素
driver.find_element(By.ID, 'username')# 与页面元素交互,在网页上执行各种操作
# 第一个、输入文本函数 send_keys()
driver.find_element(By.NAME, 'email').send_keys('1234567@163.com')
# 第二个、单击函数 click()
driver.find_element(By.XPATH, '//input[@name="Submit"]').click()# 警告框的处理
# 使用 driver 对象 调用 switch_to 方法,然后在 .(点) 调用alert方法
alert = driver.switch_to.alert
# 添加等待时间,否则关闭处理很快,看不到效果
sleep(2)
# 用返回的对象 alert 去调用 accept() 来关闭弹窗
alert.accept()# 下拉框的处理
ele = driver.find_element(By.NAME, 'sel_question')
sel = Select(ele)
# 通过下拉选项的索引去获取(索引从0开始)
# sel.select_by_index(3)
# 通过下拉选项标签的value值定位
# sel.select_by_value('favorite_movie')
# 通过下拉选项的标签的文本内容定位(需注意文本内容的完整)
sel.select_by_visible_text('我最大的爱好?')# 页面等待3秒
sleep(3)
# 关闭实例化浏览器
driver.quit()
取消选择

20、 下拉选择有多选的情况下,使用 deselect 方法可以把已经选中的给取消勾选,select 是选择,而 deselect 则是取消选择;

# 当下拉选项多选的情况下,通过索引取消选择
sel.deselect_by_index(2)
# 通过标签的value值取消选择
sel.deselect_by_value('favorite_movie')
# 通过标签文本取消选择
sel.deselect_by_visible_text('我最大的爱好?')
# 取消全部下拉选项
sel.deselect_all()

21、复选选中取消

# 导包
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from time import sleep# webDriver初始化
# driver = webdriver.Chrome()
driver = webdriver.Edge()# 页面导航
driver.get('http://localhost:8088/ecshop/user.php?act=register')# 窗口最大化
driver.maximize_window()
# 窗口最小化
# driver.minimize_window()# 查找元素
driver.find_element(By.ID, 'username')# 与页面元素交互,在网页上执行各种操作
# 第一个、输入文本函数 send_keys()
driver.find_element(By.NAME, 'email').send_keys('1234567@163.com')
# 第二个、单击函数 click()
driver.find_element(By.XPATH, '//input[@name="Submit"]').click()# 警告框的处理
# 使用 driver 对象 调用 switch_to 方法,然后在 .(点) 调用alert方法
alert = driver.switch_to.alert
# 添加等待时间,否则关闭处理很快,看不到效果
sleep(2)
# 用返回的对象 alert 去调用 accept() 来关闭弹窗
alert.accept()# 下拉框的处理
ele = driver.find_element(By.NAME, 'sel_question')
sel = Select(ele)
# 通过下拉选项的索引去获取(索引从0开始)
# sel.select_by_index(3)
# 通过下拉选项标签的value值定位
# sel.select_by_value('favorite_movie')
# 通过下拉选项的标签的文本内容定位(需注意文本内容的完整)
sel.select_by_visible_text('我最大的爱好?')# 当下拉选项多选的情况下,通过索引取消选择
sel.deselect_by_index(2)
# 通过标签的value值取消选择
sel.deselect_by_value('favorite_movie')
# 通过标签文本取消选择
sel.deselect_by_visible_text('我最大的爱好?')
# 取消全部下拉选项
sel.deselect_all()# 页面等待3秒
sleep(3)
# 关闭实例化浏览器
driver.quit()

未完待续。。。

http://www.dtcms.com/a/441955.html

相关文章:

  • Amazon S3 Vectors:向量存储、索引与多亚马逊云科技服务协同的智能桥梁解决方案
  • 第二章 prompt思维链
  • 大模型面经(一) Prompt + RAG + 微调
  • 第一章——了解prompt以及一些基础技巧方法
  • 做牛津布面料在哪个网站找客户找人一起做素材网站
  • 土豆家族工具使用适配表格大全【windows提权】
  • PyQt5 QPushButton组件详解:按钮控件的完整指南
  • Linux中do_wait函数的实现
  • 第1章 线程安全的对象生命期管理
  • Codeforces Round 1027 A. Square Year (2114)
  • 公司网站备案信息查询嵌入式开发培训
  • mysql--核心日志文件详解
  • 营销型网站要多少钱广告联盟app
  • 浙江建设职业技术学院官方网站中信建设有限责任公司资质等级
  • Vidmy 1.0.129| 无限制下载国外视频,支持高速下载、即时抓取高清视频。使用需要科学
  • (CVPR2025)DEIM模型训练自己的数据集教程(基于Pycharm)
  • 13.排序(上)
  • 《KelpBar海带Linux智慧屏项目》
  • 二叉树的层序遍历--力扣
  • 解决Linux下操作无权限问题——chmod: 正在更改...的权限:不允许的操作
  • 哈尔滨论坛建站模板ftp上传网站后怎么弄
  • 使用D3.js画人物关系图
  • 数据结构与算法篇--语义智能指针设计模式
  • 微信小程序入门学习教程,从入门到精通,WXML(WeiXin Markup Language)语法基础(8)
  • 明天好好总结汇总分析博客
  • HTML--在textarea左侧添加行号
  • mysql逻辑备份跟物理备份的区别
  • Django 学习日志
  • 如何用word做简单的网站wordpress绑定
  • 第十三篇:Python并发编程进阶:多进程(multiprocessing)