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

【UI自动化测试】8_web自动化测试 _鼠标操作和键盘操作

文章目录

  • 一、鼠标操作
    • 1.1 鼠标操作的方法
    • 1.2 案例
      • 1.2.1 鼠标操作-案例
      • 1.2.2 选择右键菜单
      • 1.2.3 拖拽-案例
    • 1.3 鼠标操作总结
  • 二、键盘操作
    • 2.1 键盘操作的方法(重点)
    • 2.2 键盘操作-案例
    • 2.3 键盘操作-总结

一、鼠标操作

常见的鼠标操作有: 点击、 右击、 双击、 悬停、 拖拽等, 对于这些鼠标操作Selenium都封装了相应的操作方法

为什么要操作鼠标? - 现在Web产品中存在丰富的鼠标交互方式,作为一个Web自动化测试框架,需要应对这些鼠标操作的应用场景。

1.1 鼠标操作的方法

说明: 在Selenium中将操作鼠标的方法封装在ActionChains类中,点击、右击、双击、悬停、拖拽等# 1、导包fromselenium.webdriverimportActionChains# 2、实例化鼠标对象:action=ActionChains(driver)# 类中放参数,说明在init中放参数# 3、调用鼠标方法:element表示元素对象action.move_to_element(element)悬停-->模拟鼠标悬停效果 action.context_click(element)右击-->模拟鼠标右键点击效果 action.double_click(element)双击-->模拟鼠标双击效果 action.drag_and_drop(source,target)拖动-->模拟鼠标拖动效果# 4、执行鼠标操作action.perform()执行-->调用鼠标方法并不会去执行鼠标操作,必须调用perform才会执行-说明:在ActionChains类中所有提供的鼠标事件方法, 在调用的时候所有的行为都存储在ActionChains对象中,而perform()方法就是真正去执行所有的鼠标事件。-强调:必须调用perform()方法才能执行鼠标事件

1.2 案例

fromtimeimportsleepfromseleniumimportwebdriverfromselenium.webdriverimportActionChainsfromselenium.webdriver.common.byimportByfromselenium.webdriver.support.selectimportSelect# 1、获取浏览器driver=webdriver.Chrome()# 2、打开urldriver.get("file:///Users/lgy/Documents/fodder/web/%E6%B3%A8%E5%86%8CA.html")# 获取ActionChains对象action=ActionChains(driver)# 练习 1# 查找注册按钮el=driver.find_element(By.CSS_SELECTOR,"button")sleep(2)# 调用悬停方法action.move_to_element(el).perform()# # 练习2# username = driver.find_element(By.CSS_SELECTOR,"#userA")# # 右击# action.context_click(username).perform()# 练习3# username = driver.find_element(By.CSS_SELECTOR,"#userA")# username.send_keys("admin")# sleep(3)# # 双击# action.double_click(username).perform()# 4、关闭浏览器sleep(3)driver.quit()

1.2.1 鼠标操作-案例

# 导包fromseleniumimportwebdriverfromtimeimportsleep# 获取浏览器驱动对象fromselenium.webdriver.common.action_chainsimportActionChainsfromselenium.webdriver.common.keysimportKeys# 获取浏览器驱动对象driver=webdriver.Chrome()# 将浏览器 最大化driver.maximize_window()# 打开urlurl=r"https://www.baidu.com/"driver.get(url)# 实例化并获取 ActionChains类action=ActionChains(driver)"""" # 定位输入框 右击鼠标 预期:粘贴 action.context_click(driver.find_element_by_css_selector("#kw")).perform() """# 1、获取输入框元素username=driver.find_element_by_css_selector("#kw")# 调用右击方法ActionChains(driver).context_click(username).perform()username.send_keys("我爱你")sleep(2)# 2、发送我爱你 并进行双击 预期:选中我爱你pwd=driver.find_element_by_css_selector("#kw")pwd.send_keys("我爱你")ActionChains(driver).double_click(pwd).perform()sleep(2)# 3、鼠标移动到 登录按钮上,ActionChains(driver).move_to_element(driver.find_element_by_css_selector('[name="tj_login"]')).perform()# 暂停 2sleep(2)# 关闭驱动对象driver.quit()

1.2.2 选择右键菜单

# 导包fromseleniumimportwebdriverfromtimeimportsleep# 获取浏览器驱动对象fromselenium.webdriver.common.action_chainsimportActionChains"""" driver = webdriver.Chrome() 谷歌浏览器不支持 --> 粘贴快捷键 """driver=webdriver.Firefox()# 打开urlurl=r"https://www.baidu.com/"driver.get(url)# 实例化并获取 ActionChains类action=ActionChains(driver)# 定位输入框 右击鼠标 预期:粘贴username=driver.find_element_by_css_selector("#kw")# 点击右键action.context_click(username).perform()# 发送pusername.send_keys("p")# 暂停 2sleep(2)# 关闭驱动对象driver.quit()

1.2.3 拖拽-案例

fromtimeimportsleepfromseleniumimportwebdriver# 获取浏览器fromselenium.webdriverimportActionChainsfromselenium.webdriver.common.byimportByfromselenium.webdriver.support.selectimportSelect driver=webdriver.Chrome()# 打开urlurl=r"D:\web自动化素材\课堂素材\drop.html"driver.get(url)# 实例化并获取 ActionChains类action=ActionChains(driver)# 获取源元素source=driver.find_element(By.CSS_SELECTOR,"#div1")# 获取目标元素target=driver.find_element(By.CSS_SELECTOR,"#div2")sleep(2)# 执行拖拽action.drag_and_drop(source,target).perform()# 扩展: 通过坐标偏移量执行# action.drag_and_drop_by_offset(source, xoffset=360, yoffset=180).perform()# 暂停 2 秒sleep(2)# 关闭驱动对象driver.quit()

1.3 鼠标操作总结

4.1为什么使用鼠标操作? 为了满足丰富的html鼠标效果,必须使用对应的方法。4.2鼠标事件对应的方法在哪个类中 ActionChains类--->导包fromselenium.webdriver.common.action_chainsimportActionChains4.3鼠标事件常用的操作方法1.context_click()# 右击应用:context_click(element).perform()2.double_click()# 双击应用:double_click(element).perform()3.drag_and_drop()# 拖拽应用:drag_and_drop(source,target).perform4.move_to_element()#悬停应用: move_to_element(element).perform()5.perform()# 执行以上事件方法4.4调用响应的方法:1.ActionChains(driver).double_click(element).perform()2.action.double_click(element).perform()4.5提示:1.selenium框架中虽然提供了,右击鼠标方法,但是没有提供选择右击菜单方法,可以通过发送快捷键的方式解决(经测试,谷歌浏览器不支持)2.鼠标操作方法,必须调用perform()才能执行 右击说明:-对于点击鼠标右键,如果弹出的是浏览器默认的菜单, Selenium没有提供操作菜单选项的方法;-如果是自定义的右键菜单,则可以通过元素定位来操作菜单中的选项。

二、键盘操作

  • 模拟键盘上一些按键或者组合键的输入 如: Ctrl+C 、 Ctrl+V;
  • Selenium中把键盘的按键都封装在Keys类中

2.1 键盘操作的方法(重点)

导包:fromselenium.webdriver.common.keysimportKeys1.send_keys(Keys.BACK_SPACE)删除键(BackSpace)2.send_keys(Keys.SPACE)空格键(Space)3.send_keys(Keys.TAB)制表键(Tab)4.send_keys(Keys.ESCAPE)回退键(Esc)5.send_keys(Keys.ENTER)回车键(Enter)6.send_keys(Keys.CONTROL,'a')全选(Ctrl+A)7.send_keys(Keys.CONTROL,'c')复制(Ctrl+C)提示: 以上方法就不一个一个讲解了, 因为调用方法都一样; send.keys()三种用法:1、输入文本2、发送按键、组合键3、上传

2.2 键盘操作-案例

# 导包fromseleniumimportwebdriverfromtimeimportsleepfromselenium.webdriver.common.keysimportKeys# 1. 创建一个Chrome浏览器实例driver=webdriver.Chrome()# 2. 打开一个网页driver.get("http://www.baidu.com")# 3. 定位输入框username=driver.find_element_by_css_selector("#kw")# 输入“我爱你”username.send_keys("我爱你")sleep(2)# 删除“你”username.send_keys(Keys.BACK_SPACE)sleep(2)# 全选“我爱” Ctrl+ausername.send_keys(Keys.CONTROL,"a")sleep(2)# 复制 Ctrl+cusername.send_keys(Keys.CONTROL,"c")sleep(2)# 定位输入框并粘贴 Ctrl+vusername.send_keys(Keys.CONTROL,"v")sleep(2)# 暂停3秒sleep(3)# 关闭浏览器driver.quit()

2.3 键盘操作-总结

4.1键盘对应的方法在Keys类中 包:fromselenium.webdriver.common.keysimportKeys4.2常用的快捷键: CONTROL:Ctrl键 其他,请参考Keys底层定义的常量4.3应用 组合键:element.send_keys(Keys.XXX,'a')单键:element.send_keys(Keys.XXX)
http://www.jsqmd.com/news/391916/

相关文章:

  • AI写论文不是问题,被查出来才是:2026年聪明的AI使用方法
  • 真心不骗你!专科生专属的一键生成工具 —— 千笔·专业论文写作工具
  • Python 微信小程序的红色导览之烈士陵园烈士纪念app
  • 本科毕业论文AI率30%能过吗?不同学校标准大揭秘
  • 建议收藏|千笔ai写作,最受欢迎的一键生成论文工具
  • 万方AIGC检测系统全解析:原理、标准与降AI技巧
  • Python 微信小程序的线上水果店购物商城springboot多商家
  • Python 微信小程序的订奶奶茶鲜奶配送系统
  • 看完就会:千笔·专业降AI率智能体,好评如潮的降AIGC软件
  • 降AI率软件到底靠不靠谱?我花了500块测了8款工具
  • 2026别错过!全网顶尖的一键生成论文工具 —— 千笔ai写作
  • 【UI自动化测试】7_web自动化测试 _页面交互操作(重点)
  • 使用MCP-hub-MCP绕过40个MCP命令的限制
  • 全桥LLC谐振变换器变频与移相混合控制仿真研究:拓宽电压范围实现MOS管与二极管零电压、零电流...
  • 前端解码:深入Naver视频流,并实现一个浏览器内的HLS解析下载器
  • 2026年英语一模在即,这些冲刺卷品牌助你提分,入学分班卷/专项教辅/中考卷/英语阅读教辅,冲刺卷直销厂家品牌推荐 - 品牌推荐师
  • 效率直接起飞!顶流之选的降AI率网站 —— 千笔AI
  • Python 微信小程序的动漫国漫交流系统动漫视频评论
  • 研究生论文AIGC检测不过关?学长亲身经历教你避坑
  • 音视频处理在Web服务中的实践:从流媒体获取到格式转换的技术解析
  • Python 微信小程序的校园生活服务平台失物招领,拼车,报名,兼职,闲置二手,活动
  • 维普AI检测突然变严了!2026年最新应对策略
  • Python 微信小程序的医患管理系统预约挂号就诊处方满意评价
  • 轻松调试iOS应用的利器——DebugSwift
  • 从零开始:利用Python逆向分析Naver视频流并实现自动化下载
  • Python 微信小程序的校园招聘求职系统
  • 电子世界的奇妙冒险:09 振荡器与定时器:电路的“心脏起搏器”
  • Python 微信小程序的校园新闻发布系统
  • Python 微信小程序的易农产品商城多商家小程序
  • axure: axure11的macos版本汉化