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
相关产品推荐
相关产品推荐

