【如何学习Python自动化测试】—— 鼠标键盘操作

简介: 【如何学习Python自动化测试】—— 鼠标键盘操作

5 、 鼠标键盘操作

     在浏览器中,通常会用到鼠标来进行操作,比如右键菜单中选择一个操作,在 selenium 中提供了下列鼠标相关操作。

     ActionChains 类提供了以下方法:

  1. 点击鼠标:click()
  2. 右击鼠标:context_click()
  3. 双击鼠标:double_click()
  4. 拖拽元素:drag_and_drop()
  5. 长按鼠标:click_and_hold()
  6. 移动鼠标到元素上:move_to_element()
  7. 右击鼠标:context_click()
  8. 模拟键盘上下键滚动:send_keys(Keys.PAGE_DOWN) 或 send_keys(Keys.PAGE_UP)
  9. 模拟鼠标滚轮滚动:execute_script(“window.scrollTo(0, document.body.scrollHeight);”)

5.1 鼠标右击

     context_click()是Selenium库中的一个方法,它可以模拟鼠标右键点击操作。在浏览器中,右键点击会弹出一个菜单,该菜单显示了可用于该元素的所有操作。context_click()方法可用于执行此操作并选择要执行的操作。

     模拟用户在 LMD 登陆界面,在输入邮箱地址的输入框右键,但是这里本身没有定义右键,所以不能打开右键,而无法操作右键,如果在项目中有用到,那右键后的菜单也可以进行定位,并操作。示例:

from selenium import webdriver
driver=webdriver.Firefox()
driver.get ('http://www.chuangyijia.com/admin/login') driver.implicitly_wait(3)
test=driver.find_element_by_id('email')
找到要执行右键操作的元素
ActionChains(driver).context_click(test).perform() 
对被操作元素执行右键

注意事项:

  • context_click()方法需要使用ActionChains类,需要先导入该类:from selenium.webdriver.common.action_chains import ActionChains
  • 在右键点击后选择操作时,可以使用send_keys()方法模拟键盘按键操作。在这里,我们使用Keys类,该类提供了一些常用键的常量,例如:Keys.CONTROL表示Ctrl键。

5.2 鼠标双击

     double_click()是一个鼠标事件函数,它会在鼠标双击时被触发。双击事件是指用户快速连续点击鼠标左键两次,一般用于实现某些特殊操作或者进行快速编辑等操作。在双击事件中,第一次单击会触发单击事件,第二次单击会触发双击事件。

     在double_click()函数中,可以定义一些动作和操作,例如打开一个新窗口、删除一条记录、选择一个项等。它主要被用于图形用户界面(GUI)中,如各种框架和库中的图形库,如Tkinter、Qt、wxWidgets等。因为在GUI中,鼠标双击事件是一种非常常见的用户操作。

from selenium import webdriver
driver=webdriver.Firefox()
driver.get ('http://www.chuangyijia.com/admin/login') driver.implicitly_wait(3)
test=driver.find_element_by_id('email')
找到要执行右键操
ActionChains(driver).double_click(test).perform() 对被操作元素执行双击

5.3 鼠标拖放

     在一些 web 页面中,一些菜单需要将鼠标放上去,才会显示它的子菜单,在这种情况下,自动化需要模拟人为将鼠标放到菜单上。

     move_to_element()方法是Selenium中模拟鼠标拖放操作的一种方法。它可以将鼠标指针移动到指定的元素上,然后按住鼠标左键拖动该元素到目标位置。

     下面通过百度页面来实现这个操作,在百度页面中,要对搜素的设置进行设置, 这种操作需要将鼠标放到页面的设置菜单中,才能看到搜索设置,才能进行下一步的

操作。代码如下:

driver.get('https://www.baidu.com')
打开百度页面
seting=driver.find_element_by_link_text('设置')
找到设置
ActionChains(driver).move_to_element(seting).perform() 将鼠标移动到设置菜单上
driver.find_element_by_link_text('搜索设置').click() 点击设置下的搜索设置

注意事项:

  • move_to_element()方法需要使用ActionChains类,需要先导入该类:from selenium.webdriver.common.action_chains import ActionChains
  • 在移动到源元素和目标元素时,可以使用find_element_by_xpath()方法或其他定位方法来定位元素。
  • click_and_hold()方法按下鼠标左键不释放,直到使用release()方法释放鼠标左键。

5.4 按键用法

     使用键盘时,需要导入 selenium.webdriver.common.keys 中的 Keys 模块。

     send_keys() 方法是Selenium WebDriver 中用于模拟输入的一种方法。它可以向指定的元素或当前活动的元素发送键盘输入,如文本、特殊字符、组合键等。

     下面代码模拟用户通过键盘向邮箱地址中输入一个数字。

driver.find_element_by_xpath('//form[@id="login"]/input[1]'). send_keys(Keys.NUMPAD3)
Keys.NUMPAD3 表示从键盘输入数字 3

     下面模拟操作 tab 键和 enter 键

driver.find_element_by_xpath('//form[@id="login"]/input[1]'). send_keys('lib@163.com')
输入邮箱
driver.find_element_by_xpath('//form[@id="login"]/input[2]'). send_keys('12345678')
输入密码
driver.find_element_by_xpath('//form[@id="login"]/input[2]'). send_keys(Keys.TAB)
按下 tab 键
driver.find_element_by_xpath('//form[@id="login"]/button').send_keys(Keys.ENTER)
按下回车键

     通过上面的代码能够看出,输入邮箱和密码之后,按下 tab 键,操作会切换到登陆按钮上,然后在登陆按钮上模拟用户按下 enter 键。

     当然这样的操作需要按业务的顺序来的,否则会出错。

注意事项:

  • send_keys() 方法需要使用 WebElement 对象,需要先通过元素定位方法(如 find_element_by_xpath())获取该元素的 WebElement 对象。
  • send_keys() 方法可以一次性输入多个字符,使用逗号分隔,如 send_keys(“123”, “,”, “abc”) 将输入 “123,abc”。
  • send_keys() 方法还可以模拟各种键盘操作,如输入特殊字符、组合键等,具体可以参考 Selenium 官方文档或相关教程。

5.5 组合键

     在 web 页面使用键盘除了上面的操作之外,还可能会有其他操作,比如组合键。

     接下来,通过代码模拟用户在界面输入邮箱地址之后,使用 ctrl+a 的方式,将其全选, 然后在使用 ctrl+c 的方式将内容复制出来,登陆成功后,将复制的内容粘贴到创意列表的标题中。代码如下:

driver.find_element_by_xpath('//form[@id="login"]/input[1]'). send_keys('lib@163.com')
输入邮箱地址
driver.find_element_by_xpath('//form[@id="login"]/input[1]'). send_keys(Keys.CONTROL,'a')
将输入的字符串使用 ctrl+a 键全选
driver.find_element_by_xpath('//form[@id="login"]/input[1]'). send_keys(Keys.CONTROL,'c')
在按下 ctrl+c,将全选的内容复制到剪切板
driver.find_element_by_xpath('//form[@id="login"]/input[2]'). send_keys('12345678')
输入密码
driver.find_element_by_xpath('//button[contains(text(),"登录 ")]').click()
登陆
#sleep(2)
driver.implicitly_wait(3)
driver.find_element_by_css_selector('#dashboard-menu > li:nth-child(2) > a:nth-child(1)').click()
点击待审核管理
driver.find_element_by_css_selector('#input01').send_keys(Key s.CONTROL,'v')
在搜索栏中的标题输入框中,用 ctrl+v 粘贴到输入框


相关文章
|
9天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
42 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
4天前
|
存储 Python
Python自动化脚本编写指南
【10月更文挑战第38天】本文旨在为初学者提供一条清晰的路径,通过Python实现日常任务的自动化。我们将从基础语法讲起,逐步引导读者理解如何将代码块组合成有效脚本,并探讨常见错误及调试技巧。文章不仅涉及理论知识,还包括实际案例分析,帮助读者快速入门并提升编程能力。
21 2
|
6天前
|
运维 监控 Python
自动化运维:使用Python脚本简化日常任务
【10月更文挑战第36天】在数字化时代,运维工作的效率和准确性成为企业竞争力的关键。本文将介绍如何通过编写Python脚本来自动化日常的运维任务,不仅提高工作效率,还能降低人为错误的风险。从基础的文件操作到进阶的网络管理,我们将一步步展示Python在自动化运维中的应用,并分享实用的代码示例,帮助读者快速掌握自动化运维的核心技能。
18 3
|
5天前
|
数据采集 IDE 测试技术
Python实现自动化办公:从基础到实践###
【10月更文挑战第21天】 本文将探讨如何利用Python编程语言实现自动化办公,从基础概念到实际操作,涵盖常用库、脚本编写技巧及实战案例。通过本文,读者将掌握使用Python提升工作效率的方法,减少重复性劳动,提高工作质量。 ###
18 1
|
12天前
|
运维 监控 应用服务中间件
自动化运维:如何利用Python脚本提升工作效率
【10月更文挑战第30天】在快节奏的IT行业中,自动化运维已成为提升工作效率和减少人为错误的关键技术。本文将介绍如何使用Python编写简单的自动化脚本,以实现日常运维任务的自动化。通过实际案例,我们将展示如何用Python脚本简化服务器管理、批量配置更新以及监控系统性能等任务。文章不仅提供代码示例,还将深入探讨自动化运维背后的理念,帮助读者理解并应用这一技术来优化他们的工作流程。
|
11天前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
25 1
|
10天前
|
Web App开发 测试技术 数据安全/隐私保护
自动化测试的魔法:使用Python进行Web应用测试
【10月更文挑战第32天】本文将带你走进自动化测试的世界,通过Python和Selenium库的力量,展示如何轻松对Web应用进行自动化测试。我们将一起探索编写简单而强大的测试脚本的秘诀,并理解如何利用这些脚本来确保我们的软件质量。无论你是测试新手还是希望提升自动化测试技能的开发者,这篇文章都将为你打开一扇门,让你看到自动化测试不仅可行,而且充满乐趣。
|
1月前
|
机器学习/深度学习 人工智能 运维
构建高效运维体系:从自动化到智能化的演进
本文探讨了如何通过自动化和智能化手段,提升IT运维效率与质量。首先介绍了自动化在简化操作、减少错误中的作用;然后阐述了智能化技术如AI在预测故障、优化资源中的应用;最后讨论了如何构建一个既自动化又智能的运维体系,以实现高效、稳定和安全的IT环境。
63 4
|
1月前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
52 4
|
4天前
|
机器学习/深度学习 数据采集 人工智能
智能运维:从自动化到AIOps的演进与实践####
本文探讨了智能运维(AIOps)的兴起背景、核心组件及其在现代IT运维中的应用。通过对比传统运维模式,阐述了AIOps如何利用机器学习、大数据分析等技术,实现故障预测、根因分析、自动化修复等功能,从而提升系统稳定性和运维效率。文章还深入分析了实施AIOps面临的挑战与解决方案,并展望了其未来发展趋势。 ####