【问题标题】:Controlling Chrome Devtools with Selenium Webdriver使用 Selenium Webdriver 控制 Chrome Devtools
【发布时间】:2015-12-23 18:51:58
【问题描述】:

我希望通过 Selenium Webdriver 访问/使用 Chrome 的开发工具面板。

具体来说,我想使用通过 devtools 访问的“WASP”chrome 插件。我已经将我的 selenium 设置为使用包含的 WASP 插件运行,并且我可以打开 DevTools(使用 sendKeys.F12),但现在我不知道如何实际使用该面板,因为它已打开。有办法吗?

我发现最接近我的问题的是这个链接:Chrome Dev Tools API & Selenium WebDriver,但这对我一点帮助都没有。

另外,如果这看起来是不可能的(确实如此),任何人都可以想到一个解决方法吗?

【问题讨论】:

  • WebDriver 用于驱动浏览器并与网页交互。除了键盘快捷键之外,它不会控制开发工具。
  • Chrome 扩展程序也是一个“网页”,其地址类似于 chrome-extension://some_gibrish/some_name.html 和一些执行某些操作的 JS。您可以从开发人员工具中监视实际 URL(扩展扩展名>右键单击检查>...)所以理论上您可以将该扩展名“注入”到您的页面上并使其运行其 JS 脚本...看起来很多工作,并且非常具体到每个扩展。

标签: java google-chrome selenium selenium-webdriver google-chrome-devtools


【解决方案1】:

在 Selenium 4 alpha 中,有一种方法可以使用 java-client 与 DevTools API 进行交互。您正在寻找的是“Profiler”域 (https://chromedevtools.github.io/devtools-protocol/tot/Profiler)

最近,我贡献了“网络”和“性能”域,以便在 selenium java 中更好地面向用户的 API - https://github.com/SeleniumHQ/selenium/pull/7212

相信“Profiler”也将很快实施。当然,前段时间合并的 Java 客户端有一个通用的所有域的 API,你可以这样使用它:

     driver.getDevTools().createSession();

    driver.getDevTools().send(new Command("Profiler.enable", ImmutableMap.of()));
    driver.getDevTools().send(new Command("Profiler.start", ImmutableMap.of()));

    //register to profiler events
    driver.getDevTools().addListener(new Event("Profiler.consoleProfileStarted", ConsoleProfileStarted.class), new Consumer<Object>() {
        @Override
        public void accept(Object o) {
            //do something
        }
    });

在将 Profiler 域添加到 Selenium java 客户端之前,您必须提供 Mapper。

【讨论】:

    猜你喜欢
    • 2022-01-02
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-23
    • 2022-10-25
    • 1970-01-01
    相关资源
    最近更新 更多