栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

键鼠模拟按键_电脑模拟鼠标操作 自动化?

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

键鼠模拟按键_电脑模拟鼠标操作 自动化?

UI自动化模拟键盘和鼠标操作

需求:在实际的UI自动化测试工作过程中,需要配合键盘按键和鼠标来操作,那么UI自动化中如何模拟键盘操作呢?

1.键盘操作

在webdriver的keys()类提供键盘上所有按键的操作,还可以模拟组合键进行操作。

基本常见的键盘操作有以下几种:

send_keys(Keys.BACK_SPACE) # 删除键(BackSpace)
send_keys(Keys.SPACE) # 空格键(Space)
send_keys(Keys.TAB) # 制表键(Tab)
send_keys(Keys.ESCAPE) # 回退键(Esc)
send_keys(Keys.ENTER) # 回车键(Enter)
send_keys(Keys.CONTROL,'a') # 全选(Ctrl+A)
send_keys(Keys.CONTROL,'c') # 复制(Ctrl+C)
send_keys(Keys.CONTROL,'x') # 剪切(Ctrl+X)
send_keys(Keys.CONTROL,'v') # 粘贴(Ctrl+V)
send_keys(Keys.F5) # 键盘 F5
send_keys(Keys. NUMPAD7) # 键盘 数字7

结合键盘操作,代码如下:

from selenium import webdriver      # 导入selenium中的webdriver
from selenium.webdriver.common.keys import Keys      # 导入keys
from time import sleep         # 导入time模块中的sleep

driver = webdriver.Chrome()
driver.get("https://www.baidu.com")     # 打开百度首页网站
sleep(2)       # 等待两秒
driver.find_element_by_id("kw").send_keys("它石软件测试a")     # 在百度首页输入框中输入它石软件测试a
sleep(2)
driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)   # 删除多余的字母a
sleep(2)
driver.find_element_by_id("kw").send_keys(Keys. NUMPAD6)   # 键盘 增加数字6
sleep(2)
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')  # ctrl+a,全选
sleep(2)
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'c')   # 复制输入的内容
sleep(2)
driver.find_element_by_id("kw").send_keys(Keys.F5)     # 刷新界面
sleep(2)
driver.get("https://www.baidu.com")     # 打开百度首页网站
sleep(2)
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'v')   # 粘贴文字到搜狐搜索框
sleep(2)
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')  # ctrl+a,全选
sleep(2)
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x')  # ctrl+x,剪切
sleep(2)
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'v')   # 粘贴文字到搜狐搜索框
sleep(2)
driver.find_element_by_id("su").click()     # 点击百度一下按钮
sleep(2)
driver.quit()   # 关闭浏览器

2.鼠标操作

在webdriver的ActionChains()类基本可以满足我们对鼠标操作的需求。比如单击,双击、右击,元素的拖拽等。

ActionChains的执行原理:当调用ActionChains方法的时候不会立即执行,而是将所有的操作暂时存储在一个队列中,当调用perform()的方法时候,队列会按照放入的先后顺序依次执行。

基本的鼠标操作有以下几种:

click()                   #单击鼠标左键
click_and_hold()      #点击鼠标左键,按住不放
context_click()             #点击鼠标右键
double_click()              #双击鼠标左键
drag_and_drop()             #拖拽到某个元素然后松开
drag_and_drop_by_offset()          #拖拽到某个坐标然后松开
move_to_element()   # 移动到某个元素上
perform()                   #执行链中的所有动作

场景:打开百度首页,将首页中的热榜关闭。

以上场景中,如果定位设置中的关闭热榜是无法直接点击的,需要先鼠标悬置在设置上,然后才能关闭热榜,代码如下:

如果直接定位元素进行关闭热榜,代码会报错,代码如下:

from selenium import webdriver      # 导入selenium中的webdriver
from time import sleep         # 导入time模块中的sleep

driver = webdriver.Chrome()
driver.get("https://www.baidu.com")     # 打开百度首页网站
driver.maximize_window()    # 最大化浏览器
driver.find_element_by_xpath('//a[@]').click()
sleep(2)
driver.quit()   # 关闭浏览器

报错信息如下,提示需要让元素可见之后才能操作:

selenium.common.exceptions.ElementNotVisibleException: Message: element not interactable

解决方案:先将鼠悬置在元素上,出现之后再关闭热榜,代码如下:

from selenium import webdriver      # 导入selenium中的webdriver
from selenium.webdriver.common.action_chains import ActionChains    # 导入ActionChains鼠标操作
from time import sleep         # 导入time模块中的sleep

driver = webdriver.Chrome()
driver.get("https://www.baidu.com")     # 打开百度首页网站
driver.maximize_window()    # 最大化浏览器
sleep(2)       # 等待两秒
element = driver.find_element_by_xpath('//span[@id="s-usersetting-top"]')     # 定位到百度的首页设置元素
ActionChains(driver).move_to_element(element).perform()   # 鼠标移动到设置元素上
sleep(2)
driver.find_element_by_xpath('//a[@]').click()
sleep(2)
driver.quit()   # 关闭浏览器

其他的方法根据具体的情况使用不同的方法即可。

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走


这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…..关注下方我的微信公众号【程序员小濠】免费获取~

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/786647.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号