You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium指定位置点击:如何确定点击目标的精确像素坐标

自定义div下拉菜单点击偏移问题解决方案
一、准确偏移像素的计算方法
  • 打开Chrome开发者工具(F12),先通过元素选择器定位到你代码中作为基准的custom1元素,右键复制它的CSS选择器备用
  • 保持下拉菜单展开状态(可以用F8冻结DOM状态:展开下拉后立刻按F8暂停JS执行,菜单就不会收起),再定位到要点击的Custom选项元素,同样复制它的CSS选择器
  • 切换到控制台标签,执行以下JS代码,输出的结果就是需要传入的偏移值:
const base = document.querySelector('替换为custom1的CSS选择器');
const target = document.querySelector('替换为Custom选项的CSS选择器');
const basePos = base.getBoundingClientRect();
const targetPos = target.getBoundingClientRect();
// 计算结果已经做了居中处理,直接代入即可
console.log('水平偏移值:', Math.round(targetPos.left - basePos.left + targetPos.width/2), '垂直偏移值:', Math.round(targetPos.top - basePos.top + targetPos.height/2));
  • 用输出的两个值替换你代码中move_to_element_with_offset的30和-5参数即可
二、更稳定的实现方案(优先推荐)

偏移点击受页面缩放、分辨率、元素加载后的位置变动影响很大,很容易失效,你已经拿到了完整的下拉菜单HTML结构,可以直接定位目标选项元素点击:

from selenium import webdriver
import time

driver = webdriver.Chrome()
url = 'https://www.mergermarket.com/homepage'
driver.get(url)

deals = driver.find_element_by_xpath('//*[@id="header"]/div/div[2]/nav/ul/li[4]/a')
urldeals = deals.get_attribute("href")
driver.get(urldeals)

# 展开下拉菜单
custom1 = driver.find_element_by_xpath('//*[@id="searchCriteriaSummary"]/div[4]/div/div[2]/div/div[1]/div[2]/div/div/div[2]/div')
custom1.click()
time.sleep(2)

# 直接定位Custom选项,替换下方xpath为你实际获取的Custom选项xpath即可
custom_option = driver.find_element_by_xpath('替换为Custom选项的实际XPath')
custom_option.click()

你之前遇到的selenium.common.exceptions.UnexpectedTagNameException报错属于正常情况,Selenium内置的Select类仅支持原生<select>标签实现的下拉菜单,div实现的自定义下拉确实无法使用该类。

内容的提问来源于stack exchange,提问作者LaurieFalcon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 09:36:03