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()
# 导包
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()