【问题标题】:Access getEventListeners from chrome webdriver (python)从 chrome webdriver (python) 访问 getEventListeners
【发布时间】:2016-03-16 05:44:58
【问题描述】:

目标:

从 selenium webdriver 获取附加到节点的所有事件


我正在使用 selenium-python,我想执行一个 javascript 脚本(通过driver.execute_script('my js script')

此脚本使用 getEventListeners,它仅在 Chrome 上可用。 我用成功了

driver = webdriver.Chrome('path/to/chromedriver')

启动 chrome 浏览器。使用getEventListeners(myNode) 执行我的脚本,我得到类似:

文件“/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py”,第 403 行,在 execute_script {'script': 脚本,'args':converted_args})['value'] 文件“/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py”,第 175 行,在执行中 self.error_handler.check_response(响应) 文件“/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py”,第 166 行,在 check_response 引发异常类(消息、屏幕、堆栈跟踪) selenium.common.exceptions.WebDriverException:消息:未知错误:未定义 getEventListeners

getEventListeners 可通过命令行 API 获得,但我无法通过 selenium 使其工作。有解决方案吗?有没有其他方法可以将所有事件绑定到一个元素? (尤其是点击事件)

干杯

【问题讨论】:

标签: javascript python google-chrome selenium


【解决方案1】:

很遗憾,答案是:无法通过ChromeDriver 访问getEventListeners。这是 -- 如 cmets 中所述 -- by design:

警告:这些函数仅在您从 Chrome DevTools 控制台调用它们时才有效。如果您尝试在脚本中调用它们,它们将不起作用。

对应的issue report 设置为WontFix

但是:

查看this answer 以查找附加到节点的所有事件而不使用getEventListeners

【讨论】:

    【解决方案2】:

    2021 年更新:

    有一个提供 Chrome 开发工具 API 的 Selenium 测试版。它几乎没有记录,但似乎确实适用于简单的仅开发工具的 JS 命令。

    例如 pip install -Iv selenium==4.0.0.b3

    browser = webdriver.Chrome('path/to/chromedriver')
    js_return = browser.execute_cdp_cmd(command, options)
    

    commandoptions 在左侧滚动窗格中定义为 here(尤其是 Runtime 部分)。

    【讨论】:

    • 这对获取 getEventListeners 的特定问题有用吗?没测试过!
    • 遗憾的是,这似乎不起作用。使用 java 客户端的 4.0.0-rc-2 我得到:Caused by: org.openqa.selenium.WebDriverException: {"id":1,"error":{"code":-32601,"message":"'getEventListeners' wasn't found"}}(我也不知道如何使用 params 映射将有用的参数传递给它,但这可能是可以解决的?)
    猜你喜欢
    • 2015-04-06
    • 1970-01-01
    • 2020-07-19
    • 1970-01-01
    • 1970-01-01
    • 2019-11-15
    • 2021-02-11
    • 1970-01-01
    • 2019-05-12
    相关资源
    最近更新 更多