https://www.jianshu.com/nb/49399448
本节内容简介
首先本地保存一个html文件,用于后续演示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Esnnoker</title>
</head>
<body>
<a>用户名:</a>
<input id="username" class="username">
<a>密码</a>
<input id="password" name="password">
<button class="login">登录</button>
<br>
<p>书中自有黄金屋</p>
<p>书中自有颜如玉</p>
<br>
<a href="https://wst.tv/" target="_blank" id="virus-202s0"
class="mnav sp dot">斯诺克</a>
<a href="http://www.cbsa.org.cn/" target="_blank" id="virus-2020"
class="mnav sp dot">中式八球</a>
<a href="http://www.cbsa.org.cn/" target="_blank" id="virus-202s0"
class="mnav sp dot">中式八球</a>
<div>
<ul>
<li class="li">贾宝玉</li>
<li class="li">薛宝钗</li>
<li class="li">王宝器</li>
</ul>
<ul>
<li>奥沙利文</li>
<li>特鲁姆普</li>
<li>肖恩墨菲</li>
</ul>
</div>
</body>
</html>
执行操作
perform() 方法
主要是调用其他操作方法后,都要再次调用这个方法,表示执行某个鼠标操作,后面会有例子
左键、右键单击、双击
from selenium.webdriver import ActionChains
from selenium import webdriver
driver = webdriver.Chrome("../resources/chromedriver.exe")
# 创建实例
chains = ActionChains(driver)
# 访问网址
driver.get("file:///C:/test.html")
# 登录按钮
username = driver.find_element_by_id("username")
login_btn = driver.find_element_by_class_name("login")
password = driver.find_element_by_id("password")
# 左键点击
chains.click(username).perform()
# 右键点击
chains.context_click(username).perform()
# 双击
chains.double_click(password).perform()
鼠标悬停到元素、偏移处
# 悬停到设置按钮
chains.move_to_element(login_btn).perform()
# 悬停到指定偏移量
chains.move_to_element_with_offset(login_btn, 2, 2).perform()
知识点
move_to_element_with_offset() 是先找到元素,再根据元素位置偏移指定偏移量
长按
# 长按
chains.click_and_hold(login_btn).perform()
拖动
# 拖动1
chains.drag_and_drop(source=username, target=password)
# 拖动2
chains.drag_and_drop_by_offset(source=username, xoffset=20, yoffset=20)
知识点
drag_and_drop 将源元素拖动到目标元素处
drag_and_drop_by_offset 将源元素拖动指定偏移量
本文摘自博客园-小菠萝测试笔记