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

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

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

常用函数

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

十二、页面截图

1、调用浏览器对象 driver ,然后直接 点 .save_screenshot() 这个截图方法,里面跟的是 截图文件保存路径,因为目前只有项目根目录,所以这里不需要写其他路径,直接写一个保存文件名即可;

# 导包
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
# 导入用来做鼠标一系列操作的类 ActionChains
from selenium.webdriver.common.action_chains import ActionChains
# 引入模拟键盘一系列操作类 Keys
from selenium.webdriver.common.keys import Keys# 实例化浏览器
driver = webdriver.Edge()# 网址
# my_url = 'https://www.leafground.com/radio.xhtml;jsessionid=node018d7x5sspx43amapyllc2ulcm3312672.node0'
my_url = 'https://www.leafground.com/input.xhtml'# 打开网页
driver.get(my_url)# 窗口最大化
driver.maximize_window()# 单选按钮的处理
# driver.find_element(By.XPATH, '//*[@id="j_idt87:console1"]/tbody/tr/td[4]/label').click()# 滚动条拖动的处理
# 1、首先定位到进度条的滑块元素--返回出去给 slider --因为后续还要使用这个滑块元素进行操作
slider = driver.find_element(By.ID, 'j_idt106:j_idt120')
# 2、获取到滑块元素的大小(宽度)
# 返回的元素 slider 调用 size 方法--返回的 slider.size 是一个字典--再获取字典的宽度 slider.size['width'] 赋值给 slider_width
slider_width = slider.size['width']
# 3、计算要拖动的偏移量(例如:要拖动到一半的位置,五分之一等等)--使用上面获取到滑块的大小的五分之一 --再把结果给返回出去给offset(返回偏移量)
offset = slider_width / 5
# 4、使用 ActionChains 类 进行拖动--调用selenium里面一个类去做相应的一个拖动处理--引入 ActionChains 类
# 首先调用这个 ActionChains 类,然后类里面需要把 浏览器驱动实例(把driver对象) 给传进来后再返回出去给 action --(因为还需要用到它)
action = ActionChains(driver)
# click_and_hold:点击并保持住滑块元素,准备拖动;
# move_by_offset:通过指定的偏移量来移动滑块;
# release:释放鼠标,完成拖动操作;
# perform:执行以上定义的动作链;
action.click_and_hold(slider).move_by_offset(offset, 0).release().perform()# 文本框实现自增或者自减操作
number_input = driver.find_element(By.ID, 'j_idt106:j_idt118_input')
# 清空输入框
number_input.clear()
# 手动输入新的值
number_input.send_keys('10')
# 使用文本框上的向上箭头模拟值自增
number_input.send_keys(Keys.ARROW_UP)
sleep(2)
# 使用文本框上的向下箭头模拟值自减
number_input.send_keys(Keys.ARROW_DOWN)# 文本框弹出日期选择的处理
# 1、定位到文本框
date_input = driver.find_element(By.ID, 'j_idt106:j_idt116')
# 2、触发文本框的点击事件,弹出日期选择框
date_input.click()
# 3、定位到弹出的日期选择框里面的元素
date_element = driver.find_element(By.XPATH, '//*[@id="j_idt106:j_idt116_panel"]/div/div[2]/table/tbody/tr[5]/td[4]/a')
date_element.click()# 页面截图
driver.save_screenshot('scr.png')# 等待3秒
sleep(3)# 关闭实例化浏览器
driver.quit()

十三、模拟键盘和鼠标的一系列操作

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

3、以多行文本输入框为例;引入键盘和鼠标类组合;

# 导入用来做鼠标一系列操作的类 ActionChains
from selenium.webdriver.common.action_chains import ActionChains
# 引入模拟键盘一系列操作类 Keys
from selenium.webdriver.common.keys import Keys

模拟键盘按键

4、在 action_keys.py 文件中填写内容;这里以 Keys.ENTER 回车键为例,其他可自行拓展;

# 导包
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
# 导入用来做鼠标一系列操作的类 ActionChains
from selenium.webdriver.common.action_chains import ActionChains
# 引入模拟键盘一系列操作类 Keys
from selenium.webdriver.common.keys import Keys# 实例化浏览器
driver = webdriver.Edge()# 网址
my_url = 'https://www.leafground.com/input.xhtml'# 打开网页
driver.get(my_url)# 窗口最大化
driver.maximize_window()# 定位到多行文本框
lines_element = driver.find_element(By.ID, 'j_idt88:j_idt101')
lines_element.send_keys('多行文本框第一行')
# 模拟键盘回车键
ActionChains(driver).send_keys(Keys.ENTER).perform()
lines_element.send_keys('第二行文字')# 等待3秒
sleep(3)# 关闭实例化浏览器
driver.quit()

5、运行查看结果;

模拟鼠标的相关操作

点击(单击)、右键点击、双击、鼠标悬停、鼠标拖拽、鼠标滚动等;

6、点击操作可以定位到元素后直接跟上单击操作;

右键点击、双击、悬停等是先定位到元素,再把定位到的元素给返回出去,模拟鼠标键盘使用 ActionChains 类,然后把浏览器对象给传进来 ActionChains(driver),调用相应的方法(右击context_click、双击double_click、悬停move_to_element),方法里面填写刚刚返回出去找到的元素,最后调用提交以上动作的动作链perform();

鼠标滚动不需要定位元素,直接调用类 ActionChains,把浏览器对象给传进来 ActionChains(driver),调用方法

move_by_offset(100, 500),里面填写滚动的偏移量,最后使用perform()完成动作链;若此方法不可行则使用JavaScript来执行向下滚动到页面底部,直接 driver 调用执行函数 driver.execute_script(),执行这个脚本,里面跟上JavaScript代码 window.scrollTo() ,里面第一个参数是 0,第二个参数是 document.body.scrollHeight(前端的JavaScript代码)driver.execute_script('window.scrollTo(0, document.body.scrollHeight);')

# 导包
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
# 导入用来做鼠标一系列操作的类 ActionChains
from selenium.webdriver.common.action_chains import ActionChains
# 引入模拟键盘一系列操作类 Keys
from selenium.webdriver.common.keys import Keys# 实例化浏览器
driver = webdriver.Edge()# 网址
my_url = 'https://www.leafground.com/input.xhtml'# 打开网页
driver.get(my_url)# 窗口最大化
driver.maximize_window()# 定位到多行文本框
lines_element = driver.find_element(By.ID, 'j_idt88:j_idt101')
lines_element.send_keys('多行文本框第一行')# 模拟键盘回车键
ActionChains(driver).send_keys(Keys.ENTER).perform()
lines_element.send_keys('第二行文字')# 模拟鼠标的操作
# 1、点击(左键单击)-- click
driver.find_element(By.ID, 'j_idt88:j_idt101').click()# 2、右键点击(右3键单击)-- context_click
ele = driver.find_element(By.ID, 'j_idt88:j_idt101')
ActionChains(driver).context_click(ele).perform()# 3、双击(左键快速两次点击)-- double_click
double_ele = driver.find_element(By.ID, 'j_idt88:j_idt91')
ActionChains(driver).double_click(double_ele).perform()# 4、鼠标悬停 -- move_to_element
move_element = driver.find_element(By.XPATH, '//*[@id="menuform:j_idt40"]/a/i[1]')
ActionChains(driver).move_to_element(move_element).perform()# 5、拖拽操作 -- drag_and_drop
# 假如有 source和target 元素
# source = driver.find_element(By.ID, 'source')
# target = driver.find_element(By.ID, 'target')
# 把 source 元素 拖拽至 target 元素
# ActionChains(driver).drag_and_drop(source, target).perform()# 6、鼠标滚动
# 向下滚动
# ActionChains(driver).move_by_offset(100, 500).perform()
# 使用JavaScript来执行向下滚动到页面底部
driver.execute_script('window.scrollTo(0, document.body.scrollHeight);')# 等待3秒
sleep(3)# 关闭实例化浏览器
driver.quit()
鼠标滚动--向下滚动

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

8、以测试网站 https://www.leafground.com/select.xhtml 页面中的 下拉菜单多选项为例,打开下拉选择框,要选择最后一个,刚开始打开下拉框时是选不到最后一个选项的,需要滚动向下才能看到最后一个选项;

9、下拉菜单有多个选项,模拟鼠标滚动到最底部那个,并点击选择;

        a、 首先需要定位到 下拉选择框,并把定位结果给赋值出去,因为需要用到;

        b、 定位到下拉框后要点击一下才能打开下拉选择框列表;

        c、 模拟鼠标滚轮向下滚动;此时需要写一个循环,让它多滚动几次,以确保可以滚动到最底部最后一个选项;

for 循环一个下划线 _ (代表一个占位符,只需要循环,不需要用到循环值),循环 xx 次,循环体里面写鼠标操作;若 xx 循环次数仍无法滚动到下拉选择框列表最后一项,则继续加大循环次数直到能够定位到最下面一个;

# 导包
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys# 实例化浏览器
driver = webdriver.Edge()# 网址
my_url = 'https://www.leafground.com/select.xhtml'# 打开网页
driver.get(my_url)# 窗口最大化
driver.maximize_window()# 鼠标滚动
# 向下滚动--下拉菜单有多个选项,模拟鼠标滚动到最底部那个,并点击选择
dropdown = driver.find_element(By.ID, 'j_idt87:lang_label')
dropdown.click()
# 模拟鼠标滚轮向下滚动
for _ in range(8):ActionChains(driver).send_keys(Keys.ARROW_DOWN).perform()# 等待3秒
sleep(3)# 关闭实例化浏览器
driver.quit()

未完待续。。。

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

相关文章:

  • 然后在亚马逊网站上做外贸做网站需要做数据库
  • 接口测试-Postman 断言
  • 网站关键词更换了专业网站建设 公司哪家好
  • 乐观锁 与 悲观锁 笔记251007
  • Linux中select的实现
  • /UI2/CL_JSON=>DESERIALIZE :JSON反序列化
  • MySQL主主复制+Keepalived高可用集群搭建与故障切换实战
  • 幼儿网站源代码室内设计案例去什么网站
  • Spring Framework源码解析——BeanFactoryAware
  • Linux系统--进程通信初解
  • 企业网站如何建设报告jsp简述网站开发流程
  • VS2022创建项目工程笔记
  • 【学习笔记05】C++11新特性学习总结(下)
  • RNN、LSTM与GRU模型
  • 基于华为云IOT设计的粮仓环境监测系统_303
  • 天津做网站企业保险公司网站策划
  • Linux-> TCP 编程2
  • 视频批量混剪、批量拼接,维多快剪-批量创作插件使用说明
  • JAVA算法练习题day30
  • 网站怎么做平台长沙官网制作
  • 做网站分前台后端吗怎样做一个网站平台
  • C++:异常处理与智能指针实战指南
  • 做芯片外贸生意上哪个网站深圳高端做网站公司
  • AutoCoder Nano 是一款轻量级的编码助手, 利用大型语言模型(LLMs)帮助开发者编写, 理解和修改代码。
  • Easyx使用(对弈类小作品)
  • 网站设计东莞wordpress 评论加星
  • AI(学习笔记第十课) 使用langchain的AI tool
  • 算法基础 典型题 堆
  • UVa 463 Polynomial Factorization
  • 老题新解|十进制转二进制