WEB自动化测试_鼠标和键盘操作
鼠标和键盘操作
鼠标操作方法
说明
- 在Selenium中将操作鼠标的方法封装在ActionChains类中
实例化对象
action = ActionChains(driver)
方法
- context_click(element).perform( ) 右击 --> 模拟鼠标右键点击效果
- double_click(element).perform( ) 双击 --> 模拟鼠标双击效果
- drag_and_drop(source, target).perform( ) 拖拽 --> 模拟鼠标拖动效果
- move_to_element(element) .perform( ) 悬停 --> 模拟鼠标悬停效果
- perform( ) 执行 --> 此方法用来执行以上所有鼠标操作
为了更好的学习其他方法,先学习perform()执行方法,因为所有的方法都需要执行才能生效
提示
- selenium框架中虽然提供了右击鼠标方法,但是没有提供选择右击菜单方法,可以通过发送快捷键的方式解决。(经测试,谷歌浏览器不支持)
实例1
- 连续操作不了,得一个功能一个功能操作
- 这个里没有拖拽方法(需要能拖拽的页面才能实现)
# 右击 双击 移动到按钮上
from selenium import webdriver
from time import sleep
from selenium.webdriver import ActionChains, Keys
from selenium.webdriver.common.by import By
driver = webdriver.Firefox()
url = r"https://www.sogou.com/"
driver.get(url)
# 实例化ActionChains对象
action = ActionChains(driver)
# context_click(element).perform( ) 右击 --> 模拟鼠标右键点击效果
context = driver.find_element(By.ID, "query")
action.context_click(context).perform()
# 传入快捷键p 粘贴
# context.send_keys("p")
# 模拟ctrl+v 粘贴
context.send_keys(Keys.CONTROL, 'v')
sleep(3)
context.submit()
sleep(3)
# 后退
driver.back()
# double_click(element).perform( ) 双击 --> 模拟鼠标双击效果
click_two = driver.find_element(By.ID, "query")
click_two.send_keys("双击")
action.double_click(click_two).perform()
sleep(3)
# move_to_element(element) .perform( ) 悬停 --> 模拟鼠标悬停效果
more = driver.find_element(By.CLASS_NAME, "m-arr")
action.move_to_element(more).perform()
sleep(3)
driver.quit()
实例2 拖拽
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)
注意
- 鼠标操作必须在调用 perform( ) 后才能执行
键盘操作
如何实现复制、粘贴的操作?
说明
- 模拟键盘上一些按键或组合键的输入,如:Ctrl+C、Ctrl+V
- Seleuim中把键盘的按键都封装在Keys类中
Keys类
-
导包:
from selenium.webdriver import 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) |
案例
需求:打开页面,完成以下操作
1.输入:admin1,暂停两秒,删除1
2.全选:admin,暂停2秒
3.复制:admin,暂停2秒
4.粘贴到密码框
from selenium import webdriver
from time import sleep
from selenium.webdriver import ActionChains, Keys
from selenium.webdriver.common.by import By
driver = webdriver.Firefox()
url = r"https://www.sogou.com/"
driver.get(url)
# 学习使用键盘操作
# 需求:打开页面,完成以下操作
# 1.输入:admin1,暂停两秒,删除1
context = driver.find_element(By.ID, "query")
context.send_keys("admin1")
sleep(2)
context.send_keys(Keys.BACK_SPACE)
# 2.全选:admin,暂停2秒
context.send_keys(Keys.CONTROL, 'A')
sleep(2)
# 3.复制:admin,暂停2秒
context.send_keys(Keys.CONTROL, 'C')
sleep(2)
context.send_keys(Keys.BACK_SPACE)
# 4.粘贴到密码框
context.send_keys(Keys.CONTROL, 'V')
sleep(1)
driver.quit()