Java 使用Selenium Webdriver控制Chrome开发工具
我希望通过Selenium Webdriver访问/使用Chrome的devtools面板 具体来说,我想使用“WASP”chrome插件,它是通过devtools访问的。我已经将selenium设置为在包含WASP插件的情况下运行,并且我可以打开DevTools(使用sendKeys.F12),但是现在面板已经打开,我不知道如何实际使用它。有没有办法做到这一点 我发现最接近我的问题的是这个链接:,但这对我一点帮助都没有Java 使用Selenium Webdriver控制Chrome开发工具,java,google-chrome,selenium,selenium-webdriver,google-chrome-devtools,Java,Google Chrome,Selenium,Selenium Webdriver,Google Chrome Devtools,我希望通过Selenium Webdriver访问/使用Chrome的devtools面板 具体来说,我想使用“WASP”chrome插件,它是通过devtools访问的。我已经将selenium设置为在包含WASP插件的情况下运行,并且我可以打开DevTools(使用sendKeys.F12),但是现在面板已经打开,我不知道如何实际使用它。有没有办法做到这一点 我发现最接近我的问题的是这个链接:,但这对我一点帮助都没有 另外,如果看起来这是不可能的(确实如此),有人能想出一个解决方法吗?在Se
另外,如果看起来这是不可能的(确实如此),有人能想出一个解决方法吗?在Selenium 4 alpha中,有一种方法可以使用java客户端与DevTools API交互。您特别需要的是“探查器”域() 最近,我在selenium java中为更好的面向用户的API提供了“网络”和“性能”域 我相信“探查器”也将很快实施。当然,Java client中的所有域都有一个通用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
}
});
driver.getDevTools().createSession();
send(新命令(“Profiler.enable”,ImmutableMap.of());
send(新命令(“Profiler.start”,ImmutableMap.of());
//注册到探查器事件
driver.getDevTools().addListener(新事件(“Profiler.consoleProfileStarted”、consoleProfileStarted.class)、新使用者(){
@凌驾
公共无效接受(对象o){
//做点什么
}
});
在将探查器域添加到Selenium java客户端之前,您必须提供映射器。WebDriver用于驱动浏览器并与网页交互。除了键盘快捷键之外,它不会控制开发工具。Chrome扩展也是一个“网页”,地址类似于
Chrome-extension://some_gibrish/some_name.html
和一些做某事的JS。您可以从开发人员工具(扩展扩展名>右键单击检查>…)监视实际URL,因此理论上您可以将该扩展名“注入”到页面中,并使其运行JS脚本。。。看起来需要做很多工作,而且每个扩展都非常具体。