Управление Chrome Devtools с помощью Selenium Webdriver
Я ищу доступ / использовать панель Chrome devtools с Selenium Webdriver.
В частности, я хочу использовать хромированный плагин "WASP", доступ к которому осуществляется через devtools. Мой селен настроен для работы с включенным плагином WASP, и я могу открыть DevTools (с sendKeys.F12), но я не знаю, как на самом деле использовать эту панель, когда она открыта. Есть ли способ сделать это?
Самая близкая вещь, которую я нашел к моей проблеме, - это ссылка: Chrome Dev Tools API и Selenium WebDriver, но это мне совсем не помогло.
Кроме того, если это выглядит так, как будто это будет невозможно (что делает), может кто-нибудь придумать обходной путь?
0 ответов
В Selenium 4 alpha есть способ взаимодействия с DevTools API с помощью java-клиента. В частности, вы ищете домен "Profiler" ( https://chromedevtools.github.io/devtools-protocol/tot/Profiler)
Недавно я внес домены "Сеть" и "Производительность" для лучшего взаимодействия с пользователем API в selenium java - https://github.com/SeleniumHQ/selenium/pull/7212
Полагаю, что "Профайлер" тоже скоро будет внедрен. Конечно, есть общий API для всех доменов в Java-клиенте, который был объединен некоторое время назад, вы можете использовать его следующим образом:
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 не будет добавлен в Java-клиент Selenium, вам нужно будет предоставить свой Mapper.
Единственное, что вы можете сделать, это следующее: - установить фокус на окно инструментов dev - получить URL окна инструментов dev driver.url.toString(); - открыть новую вкладку с этим URL
оттуда вы можете просмотреть окно devtools и можете взаимодействовать с различными элементами
если вы не можете получить доступ к элементам, которые находятся ниже уровня теневого корневого элемента, хорошо бы использовать IJavascriptexecutor с чем-то похожим на это: return document.querySelector('element above shadow root').shadowRoot.querySelector('element below shadow root');