WEB自动化测试_鼠标和键盘操作

鼠标和键盘操作

鼠标操作方法

说明

  • 在Selenium中将操作鼠标的方法封装在ActionChains类中

实例化对象

action = ActionChains(driver)

方法

  1. context_click(element).perform( ) 右击 --> 模拟鼠标右键点击效果
  2. double_click(element).perform( ) 双击 --> 模拟鼠标双击效果
  3. drag_and_drop(source, target).perform( ) 拖拽 --> 模拟鼠标拖动效果
  4. move_to_element(element) .perform( ) 悬停 --> 模拟鼠标悬停效果
  5. 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( ) 后才能执行

键盘操作

如何实现复制、粘贴的操作?

说明

  1. 模拟键盘上一些按键或组合键的输入,如:Ctrl+C、Ctrl+V
  2. 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()
posted @ 2022-09-27 10:01  muleLin  阅读(129)  评论(0编辑  收藏  举报