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

如何使用Selenium Python获取浏览器任意点击位置的坐标

如何使用Selenium Python获取浏览器任意点击位置的坐标

嘿,我来帮你搞定这个问题~你的代码思路是对的,但有个关键小问题:你用driver.execute_script()注册了点击事件,但这个方法执行完就直接返回了,不会等着你去点击页面,所以你打印的result其实是None(因为document.addEventListener()本身没有返回值)。

要实现“点击页面任意位置就获取并打印坐标”的需求,我们可以用Selenium的execute_async_script()方法,它支持异步脚本执行,能等待点击事件触发后再把结果传回Python。

下面是修正后的完整代码:

from selenium import webdriver

# 初始化浏览器驱动(这里用Chrome,你可以换成Firefox等)
driver = webdriver.Chrome()
# 打开你需要测试的页面,这里用示例页面举例
driver.get("https://example.com")

# 使用异步脚本监听点击事件并返回坐标
click_coords = driver.execute_async_script("""
    // 获取Selenium提供的异步回调函数,用来把结果传回Python
    var callback = arguments[arguments.length - 1];
    
    function clickHandler(e) {
        // 组装坐标字符串
        var coords = `${e.clientX}, ${e.clientY}`;
        console.log("点击坐标:" + coords);
        // 移除事件监听,避免重复触发(如果需要多次点击可以删掉这行)
        document.removeEventListener('click', clickHandler);
        // 把坐标通过回调函数传给Python
        callback(coords);
    }
    
    // 给文档注册点击事件监听
    document.addEventListener('click', clickHandler);
""")

# 打印获取到的坐标
print(f"你刚才点击的坐标是:{click_coords}")

# 关闭浏览器
driver.quit()

代码说明:

  • execute_async_script():和普通的execute_script()不同,它允许脚本在异步完成后再返回结果,这里我们用它来等待用户的点击操作。
  • callback函数:是Selenium自动传入的,当点击事件触发后,调用它就能把坐标数据传回Python端。
  • 如果需要持续获取多次点击的坐标,可以删掉document.removeEventListener('click', clickHandler);这行,然后用循环或者设置停止条件的方式来持续接收结果。

如果是想通过程序模拟点击并获取坐标,那可以用ActionChains,不过看你的需求是手动点击任意位置,上面的方法就完全够用啦~

备注:内容来源于stack exchange,提问作者Anh Tuấn Nguyễn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 08:43:00