【问题标题】:Python Web browser click listenerPython Web 浏览器点击监听器
【发布时间】:2022-11-28 13:29:11
【问题描述】:

是否有任何软件包或方法可以检测在网络浏览器中单击的内容?我的意思是从网络浏览器获取标签/xpath(被点击的内容)?之后通过硒或类似物找到它?

甚至用鼠标点击的坐标来判断它是什么。

就像 Playwright 中的 codegen 或类似的,就像一种聆听形式。

希望这是有道理的。

【问题讨论】:

    标签: python selenium python-webbrowser


    【解决方案1】:

    我们可以使用 driver.execute_script 添加带有 JavaScript 的窗口侦听器来侦听任何点击,然后调用 SO answer 中提供的函数 xpath 来生成元素的 Xpath。作为要点,下面是 window.addEventListener 脚本,它通过显示带有单击元素文本(如果存在)及其 Xpath 的警报来处理任何 click 事件:

    window.addEventListener('click', function(event) {alert(event.target.text+'=>'+xpath(event.target));})
    

    以下是启动浏览器、执行脚本并休眠 20 秒以允许在浏览器上进行交互的相关代码:

    def launch_url(url):
        driver = webdriver.Chrome('./chromedriver')
        driver.get(url)
        driver.execute_script("function xpath(el) { if (typeof el == 'string') return document.evaluate(el, document, null, 0, null); if (!el || el.nodeType != 1) return ''; if (el.id) return '//*[@id="' + el.id + '"'; var sames = [].filter.call(el.parentNode.children, function (x) { return x.tagName == el.tagName }); return xpath(el.parentNode) + '/' + el.tagName.toLowerCase() + (sames.length > 1 ? '['+([].indexOf.call(sames, el)+1)+']' : '')} window.addEventListener('click', function(event) {alert(xpath(event.target));});")
        time.sleep(20)
    

    作为测试,使用launch_url("https://stackoverflow.com/questions") 启动 SO 主要问题页面并单击“”按钮:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-28
      • 2021-06-01
      • 1970-01-01
      • 2014-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多