鼠标键盘操作

本文详细介绍了如何在Python的PyCharm环境中使用Selenium4.4.0进行Web自动化测试,包括ActionChains类的鼠标点击、移动、拖拽、滚轮操作,以及键盘操作如全选、复制、删除等,以及如何在实际场景中运用这些方法进行测试实践。
摘要由CSDN通过智能技术生成

鼠标键盘操作

目的: 了解Selenium 提供的 ActionChains 及Keys类,掌握鼠标点击、移动、拖拽、滚轮操作的方法,以及键盘常用操作,包括:全选、复制、剪切、粘贴、删除、退格、空格、回车、退出、shift键等操作方法。

要求: 在pycharm 环境下完成实验目的中所述各项任务

条件:win7/10、pycharm、selenium4.4.0

内容及步骤:

在进行Web自动化测试过程中,经常需要进行鼠标操作,包括鼠标的点击、双击、悬停、拖拽等。

Selenium 提供的 ActionChains 类包含一些特殊的动作的模拟方法,可以通过 ActionChains 类的代码查看。

在这里插入图片描述

每次调用 ActionChains的方法时,会将各个操作按顺序存入队列,其中可以使用pause(sec)在鼠标操作链中设置等待时间,注意不是使用sleep方法。当调用 perform() 方法时,队列中的事件会依次执行。

无论是鼠标还是键盘操作,实现动作交互中都需要使用ActionChains方法:

首先导入ActionChains 类:from selenium.webdriver import ActionChains

(或:from selenium.webdriver.common.action_chains import ActionChains

再实例化ActionChains对象:ac = ActionChains(driver)

一般执行时,要先获取操作的元素对象:element = driver.find_element(定位方法,参数) ,然后调用实例化后ActionChains对象的方法。

一、 鼠标点击操作:

  1. 鼠标左键按下并保持(不抬起):ac.click_and_hold(element)

  2. 鼠标右键单击:ac.context_click(element)

  3. 鼠标左键双击:ac.double_click(element)

二、 鼠标移动操作:

  1. 鼠标移动到元素中心点悬停:ac.move_to_element(element)

鼠标放在某些网站元素上面,会动态弹出一些内容,想要查看这些动态内容的特征,需要使用上次课中介绍的冻结界面方法:在 开发者工具栏 控制台 里面执行js代码:setTimeout(function(){debugger}, 5000)

  1. 基于当前鼠标位置按照偏移量移动:ac.move_by_offset(13,15)

表示:向右移动13,向下移动15,若想向左、上移动,偏移量前加负号

三、 鼠标拖拽与滚轮操作:

  1. 将源对象(需要移动的元素)拖拽到目标对象位置:

drag_and_drop(source, target)

  1. 滚动鼠标滚轮,直到指定元素element出现在屏幕中:

ac.scroll_to_element(element)

注意,各项操作设置后,一定不要忘记调用 perform() 方法,完成操作的执行。

如果已经生成了动作链,但是没有进行perform操作,即使后面创建了新的动作类实例,鼠标依然处于先前的状态,所以需要释放已经生成但没有执行的动作链。

释放方法如下:

from selenium.webdriver.common.actions.action_builder import ActionBuilder
# 释放所有 actions
ActionBuilder(driver).clear_action()

自动化测试的过程中,键盘事件也是十分重要的,比如我们需要按下回车键,ctrl+c复制等操作,都离不开键盘事件。

在selenium中,提供了Keys类以及send_keys方法来供我们操作电脑键盘。

在这里插入图片描述

在使用键盘按键方法前需要先导入 Keys 包:

from selenium.webdriver import Keys

Keys作为类名,类属性名使用大写字母,该类的属性被赋予的值为对应的键盘的ue编码。在selenium中,所有的键盘操作可以通过 sent_keys() 里面改变参数来实现。我们知道,传入的参数为 String 类型的文本 时,主要是在输入框中输入文本内容时使用。当传入的参数为 Keys 类中的键盘按钮的ue编码值 时,则是在某一元素上执行键盘事件。

另外,某些键盘操作可以利用实例化的ActionChains对象来实现。

四、 向指定元素输入字符(或某个键)

先选择指定的元素,例如:

text_input = driver.find_element(By.ID, "textInput")

将字符输入指定元素:

ac.send_keys_to_element(text_input, "abc")

等价于:

driver.find_element(By.ID, "textInput").send_keys("abc")

五、 shift键操作:

结合实例化的ActionChains对象所具有的按下key_down方法,实现shift键操作。例如:

按下shift键不放,输入字母,得到大写字母:

ac.key_down(Keys.SHIFT).send_keys("abc")

按下shift键输入大写A,松开shift键输入小写b:

ac.key_down(Keys.SHIFT).send_keys("a").key_up(Keys.SHIFT).send_keys("b")

针对指定的元素element,通过使用 sent_keys() 函数并改变不同参数来实现基本热键操作,以下为一些常用方法。

六、 全选、复制、剪切、粘贴操作:

Ctrl+a 全选:element.send_keys(Keys.CONTROL, 'a')

Ctrl+c 复制:element.send_keys(Keys.CONTROL, 'c')

Ctrl+x 剪切:element.send_keys(Keys.CONTROL, 'x')

Ctrl+v 粘贴:element.send_keys(Keys.CONTROL, 'v')

七、 删除、退格、空格、回车、退出操作:

Delete删除: element.send_keys(Keys.DELETE)

Backspace退格:element.send_keys(Keys.BACK_SPACE)

Space空格:element.send_keys(Keys.SPACE)

Enter回车: element.send_keys(Keys.ENTER)

Ese退出: element.send_keys(Keys.ESCAPE)

八、 数字键及F1~F12功能键操作:

向元素输入数字键1:element.send_keys(Keys.NUMPAD1)

向元素发送F4键: element.send_keys(Keys.F4)

练习1:在浏览器中访问百度网站,将窗口最大化,鼠标置于顶部“地图”菜单项,右键单击,暂停3秒查看界面状态,使用move_by_offset函数将鼠标移动到界面中任何一个热搜超链接上(调试找到适合的偏移量),进行点击,等待5秒,在新打开网页中,应用鼠标滚轮使页面底部的“相关搜索”出现在屏幕中,等待5秒。关闭浏览器。

提交代码
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.actions.action_builder import ActionBuilder
driver = webdriver.Chrome()
driver.implicitly_wait(5)
# 练习一
driver.get("https://www.baidu.com/")
driver.maximize_window()
ac = ActionChains(driver)
element = driver.find_element(By.CSS_SELECTOR, '#s-top-left > a:nth-child(3)')
ac.context_click(element).perform()
time.sleep(3)
ActionBuilder(driver).clear_actions()
ac.move_by_offset(501, 326).click().perform()
driver.implicitly_wait(5)
driver.switch_to.window(driver.window_handles[1])

element = driver.find_element(By.CSS_SELECTOR, '#rs_new > div')
ac.scroll_to_element(element).perform()
time.sleep(3)
driver.quit()

练习2:在浏览器中访问百度网站,将窗口最大化,鼠标悬停在顶部“设置”菜单项,暂停3秒,单击“关闭热搜”,查看界面状态变化;打开新网页“http://sahitest.com/demo/dragDropMooTools.htm” ,拖拽“drag me”方块到“Item 3”上,查看是否出现了“dropped”文本,出现则测试通过,否则失败。关闭浏览器。

import time

from selenium import webdriver
from selenium.webdriver.common.by import By

from selenium.webdriver.common.action_chains import ActionChains

driver = webdriver.Chrome()
driver.implicitly_wait(5)
# 练习二
driver.get("https://www.baidu.com/")
driver.maximize_window()
ac = ActionChains(driver)
element = driver.find_element(By.CSS_SELECTOR, '#s-usersetting-top')
ac.move_to_element(element).perform()
time.sleep(3)
element = driver.find_element(By.CSS_SELECTOR, '#s-user-setting-menu > a.s-set-hotsearch.set-hide').click()
time.sleep(3)
# driver.quit()
driver = webdriver.Chrome()
driver.get("http://sahitest.com/demo/dragDropMooTools.htm")
driver.implicitly_wait(5)
ac = ActionChains(driver)
source = driver.find_element(By.CSS_SELECTOR, '#dragger')
target = driver.find_element(By.CSS_SELECTOR, 'body > div:nth-child(6)')
ac.drag_and_drop(source, target).perform()
time.sleep(3)

练习3:在浏览器中访问百度网站,使用模拟键盘控制:在搜索输入框中输入大写的“S”,然后输入小写的“elenium!”,对当前输入框内容进行全选、复制操作。打开新网页“https://www.sogou.com”进入搜狗网站,在其搜索输入框中先执行粘贴,再输入“!”,暂停3秒,然后删除两个字符,执行回车操作,检查是否出现查询结果,是查询结果页测试通过,否则测试失败。关闭浏览器。

import time
from time import sleep
from selenium import webdriver
from selenium.webdriver import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver import ActionChains
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome()
driver.implicitly_wait(5)
# 练习三
driver.get("https://www.baidu.com/")
driver.maximize_window()
ac = ActionChains(driver)
element = driver.find_element(By.CSS_SELECTOR, "#kw")
ac.key_down(Keys.SHIFT).send_keys("S").key_up(Keys.SHIFT).send_keys("elenium!").perform()
time.sleep(2)
element.send_keys(Keys.CONTROL, 'a')
element.send_keys(Keys.CONTROL, 'c')
driver.get("https://www.sogou.com")

element = driver.find_element(By.CSS_SELECTOR, '#query')
element.send_keys(Keys.CONTROL, 'v')
time.sleep(2)
element.send_keys('!')
# ac.send_keys_to_element(element, '!')

time.sleep(3)
element.send_keys(Keys.BACK_SPACE)
element.send_keys(Keys.BACK_SPACE)
element.send_keys(Keys.ENTER)
time.sleep(3)
# assert "搜狗搜索" in driver.title
for handle in driver.window_handles:
    # 先切换到该窗口
    driver.switch_to.window(handle)
    # 得到该窗口的标题栏字符串,判断是不是我们要操作的那个窗口
    if '搜狗搜索' in driver.title:
        # 如果是,那么这时候WebDriver对象就是对应的该该窗口,正好,跳出循环,
        print('测试通过')
        break
    else:
        print('测试没通过')
driver.quit()
  • 7
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
模拟鼠标键盘操作脚本可以通过配合使用定时执行专家和VBS脚本来实现。定时执行专家是一个定时执行任务的工具,而VBS脚本可以实现监控鼠标操作状态和获取鼠标位置的功能。通过两者的配合,可以实现模拟鼠标键盘操作的功能。 具体实现方法如下: 1. 首先,下载并安装定时执行专家软件。 2. 然后,下载并安装VBS脚本。 3. 在VBS脚本中使用C++的GetAsynckeyState(VK_NAME)方法来监控鼠标操作状态,使用GetCursorPos(LPPOINT lp)来获取鼠标位置。 4. 编写录制鼠标键盘操作的脚本,并保存为一个文件。 5. 在定时执行专家软件中设置定时执行任务,并选择要执行的VBS脚本文件。 6. 设置任务的执行时间和频率,然后保存设置。 7. 当定时执行专家到达设定的执行时间时,它将自动运行VBS脚本,并模拟鼠标键盘操作。 通过以上步骤,你可以实现模拟鼠标键盘操作的脚本。请注意,具体的操作步骤可能会因为软件版本和设置的不同而有所差异,请根据实际情况进行操作。 #### 引用[.reference_title] - *1* *3* [自动定时执行键盘鼠标操作的工具软件(附完整VBS脚本) —— 定时执行专家](https://blog.csdn.net/boomworks/article/details/124958325)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【C++】一个简单的模拟实现鼠标脚本精灵](https://blog.csdn.net/qq_42799236/article/details/107030999)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值