Selenium-鼠标和键盘操作
1、鼠标操作
常见的鼠标操作有:点击、右击、双击、悬停、拖拽等,对于这些鼠标操作Selenium都封装了相应的操作方法。
1.1 为什么要操作鼠标?
现在Web产品中存在丰富的鼠标交互方式,作为一个Web自动化测试框架,需要应对这些鼠标操作的应用场景。
1.2 鼠标操作的方法
说明:在Selenium中将操作鼠标的方法封装在ActionChains类中
实例化对象:
action = ActionChains(driver)
方法:
1. context_click(element) 右击 --> 模拟鼠标右键点击效果
2. double_click(element) 双击 --> 模拟鼠标双击效果
3. drag_and_drop(source, target) 拖动 --> 模拟鼠标拖动效果
4. move_to_element(element) 悬停 --> 模拟鼠标悬停效果
5. perform() 执行 --> 此方法用来执行以上所有鼠标操作
为了更好的学习其他方法,我们先学习perform()执行方法,因为所有的方法都需要执行才能生效
1.3 鼠标执行-perform()
说明:在ActionChains类中所有提供的鼠标事件方法,在调用的时候所有的行为都存储在ActionChains对象中,
而perform()方法就是真正去执行所有的鼠标事件。
强调:必须调用perform()方法才能执行鼠标事件
1.4 鼠标右击-context_click()
说明:对于点击鼠标右键,如果弹出的是浏览器默认的菜单,Selenium没有提供操作菜单选项的方法;
如果是自定义的右键菜单,则可以通过元素定位来操作菜单中的选项。
1.4.1 练习-代码实现关键点分析
# 需求:打开百度,在搜索框上点击鼠标右键
1. 导包:from selenium.webdriver.common.action_chains import ActionChains
2. 实例化ActionChains对象:action = ActionChains(driver)
3. 调用右键方法:action.context_click(element)
4. 执行:action.perform()
# 快速导包: Alt Enter
# 快速调整格式: Ctrl Alt L
# 导包
from selenium import webdriver
from selenium.webdriver import ActionChains
# 获取浏览器驱动对象
driver = webdriver.Firefox()
url = "https://www.百度.com"
# 实例化 ActionChains对象
action = ActionChains(driver)
driver.get(url)
# 使用CSS id选择器获取搜索框
kw = driver.find_element_by_css_selector("#kw")
# 右击搜索框并执行
action.context_click(kw).perform()
driver.quit()
1.5 鼠标双击-double_click()
说明:模拟双击鼠标左键操作
1.5.1 练习
# 需求:打开百度,在搜索框上输入CSDN,双击鼠标左键,选中CSDN
# 导包
from time import sleep
from selenium import webdriver
# 获取浏览器驱动对象
from selenium.webdriver import ActionChains
driver = webdriver.Firefox()
url = "https://www.百度.com"
# 实例化 ActionChains对象
action = ActionChains(driver)
driver.get(url)
# 使用CSS id选择器获取搜索框
kw = driver.find_element_by_css_selector("#kw")
# 搜索框中输入CSDN
kw.send_keys("CSDN")
driver.find_element_by_css_selector("[value= '百度一下']").click()
# 双击左键选中CSDN
action.double_click(kw).perform()
sleep(5)
driver.quit()
1.6 鼠标拖拽-drag_and_drop()
说明:模拟鼠标拖动动作,选定拖动源元素释放到目标元素
拖动关键点分析:
1. 源元素 source = driver.find_element_by_id(xxx)
2. 目标元素 target = driver.find_element_by_id(xxx)
3. 调用方法 action.drag_and_drop(source, target).perform()
1.7 鼠标悬停-move_to_element()
说明:模拟鼠标悬停在指定的元素上
1.7.1 练习
# 需求:打开百度,在搜索框上输入CSDN,悬停
# 导包
from time import sleep
from selenium import webdriver
# 获取浏览器驱动对象
from selenium.webdriver import ActionChains
driver = webdriver.Firefox()
url = "https://www.百度.com"
# 实例化 ActionChains对象
action = ActionChains(driver)
driver.get(url)
# 使用CSS id选择器获取搜索框
kw = driver.find_element_by_css_selector("#kw")
move = driver.find_element_by_css_selector('.aging-entry-inner')
# 悬停
action.move_to_element(move).perform()
sleep(5)
driver.quit()
2.键盘操作
思考:如何实现复制、粘贴的操作?
说明:
1). 模拟键盘上一些按键或者组合键的输入 如:Ctrl C 、Ctrl V;
2). Selenium中把键盘的按键都封装在Keys类中
2.1 Keys类
导包:from selenium.webdriver.common.keys import Keys
2.2 常用的键盘操作
1. 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)
提示:以上方法就不一个一个讲解了,因为调用方法都一样;
2.3 案例
需求:打开注册A页面,完成以下操作
1). 输入用户名:admin1,暂停2秒,删除1
2). 全选用户名:admin,暂停2秒
3). 复制用户名:admin,暂停2秒
4). 粘贴到密码框
2.4 示例代码
# 定位用户名
element = driver.find_element_by_id("userA")
# 输入用户名
element.send_keys("admin1")
# 删除1
element.send_keys(Keys.BACK_SPACE)
# 全选
element.send_keys(Keys.CONTROL, 'a')
# 复制
element.send_keys(Keys.CONTROL, 'c')
# 粘贴
driver.find_element_by_id('passwordA').send_keys(Keys.CONTROL, 'v')
# 导包
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.keys import Keys
# 获取浏览器驱动对象
driver = webdriver.Firefox()
# 打开url
url = r"D:\web自动化素材\课堂素材\注册A.html"
driver.get(url)
"""
目标:学习使用基于selenium完成键盘操作
案例:
1. 输入用户名admin1
2. 删除 1
3. 全选 用户名 "admin" Ctrl A
4. 复制 admin Ctrl C
5. 粘贴 将复制的admin粘贴到密码框
分析:
1. 导包 Keys
2. 调用 send_keys(Keys.XXX,'a')
"""
# 定位 用户名
username = driver.find_element_by_css_selector("#userA")
# 输入 admin1
username.send_keys("admin1")
sleep(2)
# 删除1
username.send_keys(Keys.BACK_SPACE)
sleep(2)
# 全选 admin Ctrl a
username.send_keys(Keys.CONTROL, "a")
sleep(2)
# 复制 Ctrl c
username.send_keys(Keys.CONTROL, "c")
sleep(2)
# 定位密码框 并执行 Ctrl v
driver.find_element_by_css_selector("#passwordA").send_keys(Keys.CONTROL, "v")
# 暂停 2
sleep(2)
# 关闭驱动对象
driver.quit()
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhfjkieb
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01