问题
I am looking to access/use Chrome's devtools panel with Selenium Webdriver.
Specifically, I want to use the "WASP" chrome plugin, which is accessed through devtools. I've got my selenium set up to run with the WASP plugin included, and I can open DevTools (with sendKeys.F12), but I don't know how to actually use that panel now that it is open. Is there a way to do so?
The closest thing I've found to my problem is this link: Chrome Dev Tools API & Selenium WebDriver, but that hasn't been helpful at all to me.
Also, if it looks like this will be impossible (which it does) can anyone think of a workaround?
回答1:
In Selenium 4 alpha, there is a way to interact with DevTools API using the java-client. What you are looking for specifically is the "Profiler" domain (https://chromedevtools.github.io/devtools-protocol/tot/Profiler)
Recently, I contributed the "Network" and "Performance" domains for a better user facing API in selenium java - https://github.com/SeleniumHQ/selenium/pull/7212
I believe that "Profiler" will also be implemented soon. Of course, there is a generic API for all domains in Java client that was merged a while ago, you can use it like this:
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
}
});
Until the Profiler domain will added to Selenium java client, you will have to supply your Mapper.
回答2:
One thing you can do is the following: - set focus on dev tools window - get url of dev tools window driver.url.toString(); - open a new tab with that url
from there you can inspect the devtools window and are able to interact with the different elements
if you cant access elements that are below the level of a shadow root element it is good to use IJavascriptexecutor with something similar to this: return document.querySelector('element above shadow root').shadowRoot.querySelector('element below shadow root');
回答3:
So I was able to use javascript to pass the queried element to webdriver and click it. for entering strings into the dev console I used WinAppDriver to get the window into focus and enter the neccessary command in. It works moderately but is better than i expected.
来源:https://stackoverflow.com/questions/32790649/controlling-chrome-devtools-with-selenium-webdriver