click()可以模拟鼠标单击,但是现在web产品有了更多的交互,如鼠标右击、双击、悬停等操作,在webdriver中这些鼠标操作都封装在ActionChains类
ActionChains提供了鼠标操作的常用方法:
1.perform():执行所有ActionChains中存储的方法
2.context_click():右击
3.double_click():双击
4.drag_and_drop():拖动
5.move_to_element():鼠标悬停
一、右键操作
from selenium import webdriver
from selenium.webdriver import ActionChains
import time
url = "https://www.sogou.com/"
driver = webdriver.Firefox()
driver.get(url)
#找到搜索输入框
search_box = driver.find_element_by_id("query")
search_box.click()
time.sleep(4)
ActionChains(driver).context_click(search_box).perform()
注:
1.from selenium.webdriver import ActionChains 导入提供鼠标操作的ActionChains类
2.ActionChains(driver)将浏览器驱动driver作为参数传入
3.context_click()模拟鼠标右键操作,在调用时需要置顶元素位置
4.perform():执行所有ActionChains中存储的行为,可以理解为整个动作的提交操作
二、鼠标悬停
#定位到要悬停的元素
above = driver.find_element_by_id("id")
#对定位到的元素执行悬停操作
ActionChains(driver).move_to_element(above).perform()
三、鼠标双击
#定位到要双击的元素
double_click = driver.find_element_by_id("id")
#对定位到的元素执行双击操作
ActionChains(driver).double_click(above).perform()
四、鼠标拖放操作
#定位元素的原位置
element = driver.find_element_by_id("xx")
#定位元素要移动到的位置
target = driver.find_elemnt_by_id("xx")
#执行元素的拖放操作
ActionChains(driver).drag_and_drop(element,target).perform()