Selenium-ActionChains类
一、介绍
- move_to_element(element):将鼠标移动到指定的元素上。
- move_to_element_with_offset(element, xoffset, yoffset):将鼠标移动到指定元素的偏移位置。
- click(element=None):单击指定的元素。如果未指定元素,将在当前鼠标位置单击。
- click_and_hold(element=None):按住指定元素。如果未指定元素,将在当前鼠标位置按住。
- double_click(element=None):双击指定的元素。如果未指定元素,将在当前鼠标位置双击。
- context_click(element=None):右击指定的元素。如果未指定元素,将在当前鼠标位置右击。
- drag_and_drop(source, target):将源元素拖拽到目标元素上。
- drag_and_drop_by_offset(source, xoffset, yoffset):将源元素拖拽到指定的偏移位置。
- key_down(value, element=None):按住指定的键。如果提供了元素,将在元素上按住键。
- key_up(value, element=None):释放指定的键。如果提供了元素,将在元素上释放键。
- send_keys(*keys_to_send):在当前鼠标位置的元素上发送按键。
- send_keys_to_element(element, *keys_to_send):在指定元素上发送按键。
- pause(seconds):暂停指定的秒数。
- perform():执行ActionChains中的所有操作。
二、引用
from selenium.webdriver import ActionChains
三、使用示例
1、访问高德地图:https://www.amap.com/
2、点击北京![]()

3、示例代码
# -*- coding: utf-8 -*- from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver import ActionChains from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.common.exceptions import TimeoutException import os URL = "https://www.amap.com" # 偏移量:相对目标元素左上角的位置,可按需调整 OFFSET_X = 200 OFFSET_Y = 200 def build_driver(): # 如不想每次都杀掉进程,可去掉下一行 os.system("taskkill /f /im chromedriver.exe") opts = webdriver.ChromeOptions() opts.add_experimental_option("excludeSwitches", ["enable-automation"]) opts.add_argument("disable-blink-features=AutomationControlled") # 如需无头:opts.add_argument("--headless=new") return webdriver.Chrome(options=opts) def click_map(driver): wait = WebDriverWait(driver, 10) try: driver.get(URL) driver.maximize_window() # 等待地图层可见 ly = wait.until(EC.visibility_of_element_located((By.ID, "renderArrowLayer"))) actions = ActionChains(driver) # 偏移点击 actions.move_to_element_with_offset(ly, OFFSET_X, OFFSET_Y).click().perform() print("点击成功") except TimeoutException: print("等待元素超时") except Exception as e: print(f"点击失败: {e}") def main(): driver = build_driver() try: click_map(driver) WebDriverWait(driver, 5).until(lambda d: True) # 简单等待,必要时替换为成功标识 finally: driver.quit() # 如需观察页面,可注释掉 if __name__ == "__main__": main()
4、实现后效果

5、Page Ruler 点击进行下载


浙公网安备 33010602011771号