UI自动化-(web端鼠标&键盘操作-实操入门)

本文详细介绍了使用Selenium进行UI自动化测试时的鼠标和键盘操作,包括鼠标右击、双击、拖放、悬停等常见功能的实现方式,并提供了具体的代码示例。此外,还讲解了键盘快捷键模拟,如全选、复制、粘贴等操作的执行方法。
摘要由CSDN通过智能技术生成

鼠标操作

1. 鼠标操作实现方式

  • Selenium 中通过ActionChains类来进行鼠标操作的方法和步骤:
    导入ActionChains类
    • 通过ActionChains实例化鼠标对象   action = ActionChains(driver)  # driver表示的是浏览器驱动对象
    • 调用鼠标的事件方法
    • 调用鼠标的执行方法   action.perform()
  • 示例
    • 实例化对象:action = ActionChains(driver)
    • 方法:
      • 1.context_click(element) 右击
      • 2.double_click(element) 双击
      • 3.drag_and_drop(source, target) 拖动
      • 4.move_to_element(element) 悬停
      • 5.drag_and_drop_by_offset(element, x, y) 单元素拖动
      • 6.perform() 执行

2. 鼠标常用操作实操

1. 鼠标右击操作

右击事件方法  action.context_click(element)  # element表示的是一个元素对象

代码示例:

# 导包
import time
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By

# 实例化浏览器驱动
driver = webdriver.Chrome()
driver.maximize_window()

# 打开baidu网站
driver.get("https://www.baidu.com")

# 点击页面右上角【登录】按钮,进入登录页面
driver.find_element(By.ID, "s-top-loginbtn").click()

'''
"右击"
调用鼠标右击的方法点击登录二维码
'''
# 创建鼠标对象
action = ActionChains(driver)

# 定位到登录页面二维码,鼠标右键点击二维码
time.sleep(5)
element = driver.find_element_by_class_name("tang-pass-qrcode-img")
action.context_click(element)

# 执行右键点击
action.perform()

# 等待3S
time.sleep(3)

# 退出浏览器驱动
driver.quit()

2. 鼠标双击操作

调用鼠标双击事件方法  action.double_click(element)  # element表示是元素对象

代码示例:

# 导包
import time
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By

# 实例化浏览器驱动
driver = webdriver.Chrome()
driver.maximize_window()

# 打开baidu网站
driver.get("https://www.baidu.com")

# 点击页面右上角【登录】按钮,进入登录页面
driver.find_element(By.ID, "s-top-loginbtn").click()

'''
"双击"
定位到手机号输入框中输入18888888888
鼠标双击点击输入框,复制已经输入的手机号
'''

# 创建鼠标对象
action = ActionChains(driver)

# 定位到手机号输入框中输入18888888888
time.sleep(3)
element = driver.find_element(By.CSS_SELECTOR, "[name='userName']")
element.send_keys("18888888888")

# 执行双击输入框,复制已经输入的手机号
action.double_click(element)
action.perform()

# 等待3S
time.sleep(3)

# 退出浏览器驱动
driver.quit()

3. 鼠标拖动操作

调用鼠标拖动事件方法  action.drag_and_drop(source, target)  # source表示的是源元素,被拖动的元素;  target表示是目标源,也就是要拖动到哪个元素上。

代码示例:

# 导包
import time
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By

# 实例化浏览器驱动
driver = webdriver.Chrome()
driver.maximize_window()

# 打开baidu网站
driver.get("https://www.baidu.com")

# 点击页面右上角【登录】按钮,进入登录页面
driver.find_element(By.ID, "s-top-loginbtn").click()

'''
"拖动"
把登录二维码拖动到手机号输入框中
'''
# 创建鼠标对象
action = ActionChains(driver)

# 把登录二维码拖动到手机号输入框中
time.sleep(5)
element_source = driver.find_element_by_class_name("tang-pass-qrcode-img")  # 源元素位置
element_target = driver.find_element(By.CSS_SELECTOR, "[name='userName']")  # 目标元素位置
action.drag_and_drop(element_source, element_target)

# 执行把登录二维码拖动到手机号输入框中(仅为演示效果)
action.perform()

# 等待3S
time.sleep(3)

# 退出浏览器驱动
driver.quit()

4. 鼠标悬停操作

调用鼠标悬停事件方法  action.move_to_element(element)  # element表示的是元素对象

代码示例:

# 导包
import time
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By

# 实例化浏览器驱动
driver = webdriver.Chrome()
driver.maximize_window()

# 打开baidu网站
driver.get("https://www.baidu.com")

# 点击页面右上角【登录】按钮,进入登录页面
driver.find_element(By.ID, "s-top-loginbtn").click()

'''
"鼠标悬停"
定位到"下载百度APP"上悬停鼠标,显示下载二维码
'''

# 创建鼠标对象
action = ActionChains(driver)

# 定位到"下载百度APP"上悬停鼠标
time.sleep(3)
element = driver.find_element(By.CSS_SELECTOR, ".pass-link")

# 执行悬停鼠标到"下载百度APP",显示下载二维码
action.move_to_element(element)
action.perform()

# 等待3S
time.sleep(3)

# 退出浏览器驱动
driver.quit()

5. 鼠标单元素拖动操作

调用鼠标单元素拖动事件方法   action.drag_and_drop_by_offset(element, x, y)  x, y 表示的元素拖动时横向和纵向移动的距离,单位为像素, element表示的是元素对象  移动的像素最终要比在web页面中看到的移动像素值要大5-10像素(实际应用在滑动获取验证码中,示例只为演示效果

代码示例:

'''
模拟鼠标拖动滑块验证码,实际拖动的像素数需要具体问题具体分析
'''

element = driver.find_element(By.CSS_SELECTOR, '.handler_demo')

# 创建鼠标对象
action = ActionChains(driver)

# 调用鼠标拖动滑块验证码
action.drag_and_drop_by_offset(element, 200, 0)

# 执行拖动
action.perform()

# 退出浏览器驱动
driver.quit()


键盘操作

  • 模拟键盘上面的快捷键的操作
  • 调用键盘操作的快捷键的方法  element.send_keys(快捷键的键值)
  • 注意键盘操作需要与正在使用的电脑键盘设置保持一致。例如全选/复制/粘贴,控制键可能是CONTROL,也可能是COMMAND
  • 方法:
    导入Keys类 (注意K是大写)
    单键值: 直接传入对应的键值 示例:send_keys(Keys.BACK_SPACE)
    组合键: 键值之间由逗号分隔 示例:send_keys(Keys.CONTROL,  Keys.SHIFT,  'i')
  • 常用的快捷键 :
    • 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.COMMAND,'a')
    • send_keys(Keys.CONTROL,'c') 复制(Ctrl+C)/send_keys(Keys.COMMAND,'c') 复制(Ctrl+C
    • send_keys(Keys.CONTROL, 'v') 粘贴 /send_keys(Keys.COMMAND, 'v')

       
# 导包
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

# 实例化浏览器驱动

driver = webdriver.Chrome()
driver.maximize_window()

# 打开baidu网站
driver.get("https://www.baidu.com")

# 点击页面右上角【登录】按钮,进入登录页面
driver.find_element(By.ID, "s-top-loginbtn").click()

# 定位到手机号输入框中输入1888888888876
time.sleep(3)
element = driver.find_element(By.CSS_SELECTOR, "[name='userName']")
element.send_keys("1888888888876")
time.sleep(2)
element.send_keys(Keys.BACK_SPACE)  # 删除最后一个字符串
element.send_keys(Keys.BACK_SPACE)  # 删除倒数第二个字符串

# 全选输入的内容
# element.send_keys(Keys.CONTROL, 'a')
element.send_keys(Keys.COMMAND, 'a')  # 与正在使用的电脑键盘设置保持一致
time.sleep(2)

# 复制输入的内容
# element.send_keys(Keys.CONTROL, 'c')
element.send_keys(Keys.COMMAND, 'c')  # 与正在使用的电脑键盘设置保持一致

# 粘贴复制的内容到密码框
element_new = driver.find_element(By.CSS_SELECTOR, '.pass-text-input-password')
# element_new.send_keys(Keys.CONTROL, 'V')
element_new.send_keys(Keys.COMMAND, 'V')  # 与正在使用的电脑键盘设置保持一致

# 勾选"阅读并接受"的复选框
element = driver.find_element_by_id("TANGRAM__PSP_11__isAgree")
element.click()
time.sleep(1)

# 点击回车键确定
element.send_keys(Keys.ENTER)

# 等待3S
time.sleep(3)

# 退出浏览器驱动
driver.quit()

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值