Как открыть консоль Chrome Developer в Selenium WebDriver с помощью JAVA
Я хочу спросить, как открыть консоль разработчика Chrome во время выполнения тестов selenium. В настоящее время, когда тесты выполняются, и я открываю консоль вручную, нажимая F12, тесты перестают отвечать на запросы немедленно и не работают через некоторое время.
Может ли кто-нибудь сказать мне, как я могу начать тесты с открытой консоли разработчика, чтобы я мог поймать/наблюдать за ошибками консоли, которые происходят во время выполнения теста.
Ответы
Ответ 1
Используйте --auto-open-devtools-for-tabs
:
Этот флаг делает Chrome автоматически открывающим окно DevTools для каждой вкладки. Он предназначен для разработчиков и автоматизации, чтобы не требовать взаимодействия с пользователем для открытия DevTools.
Источник
Ответ 2
Вы не можете. Драйвер Chrome использует протокол удаленной отладки Chrome для связи с браузером. Это тот же протокол, который использует консоль разработчика. К сожалению, Chrome разработан таким образом, что только один клиент может быть подключен с использованием протокола за раз, поэтому это означает либо инструменты разработчика, либо драйвер, но не оба одновременно.
Ответ 3
Это работает для меня в webdriver.io(wdio.conf.js)
const configs = {
chrome : {
maxInstances: "5",
browserName: "chrome",
chromeOptions: {
args: ['--window-size=1280,800', '--auto-open-devtools-for-tabs'],
binary: '/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome'
}
},
firefox : {
maxInstances: "5",
browserName: "firefox"
},
headless : {
maxInstances: "5",
browserName: "chrome",
chromeOptions: {
args: ['--headless', '--disable-gpu', '--window-size=1280,800'],
binary: '/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome'
}
},
}
Ответ 4
Вы пытались имитировать события нажатия клавиш для быстрого доступа к инструментам разработчика в Chrome?
String openDevTools = Keys.chord(Keys.ALT, Keys.CONTROL, "i");
driver.findElement(By.ByTagName("body")).sendKeys(openDevTools);
Это не идеально, и в строгом режиме тестирования вам потребуется определение платформы, чтобы обеспечить покрытие как Mac, так и Windows. Я бы абсолютно рекомендовал избегать этого (даже если он работает), но это возможно, как работа, если вы действительно должны.
У меня такое чувство, что это может также потерять фокус самого окна, если вы это сделаете. Если это так, вам понадобится следующее: -
String parentHandle = driver.getWindowHandle(); // get the current window handle
// do your dev tool stuff here
driver.switchTo().window(parentHandle); // switch back to the original window
Надеюсь, что это поможет.
Полезная ссылка, если она вас доставит: Как обрабатывать новое окно в Selenium WebDriver с помощью Java?
Изменить: просто перечитайте вопрос и не думайте, что это все равно сработает. В ваших модульных тестах должны записываться ошибки в логике вашего кода. Тестирование селена должно только проверять поездки пользователей и фиксировать ошибки, когда пользовательская поездка прерывается. Вы никогда не должны тестировать логику кода/ошибку при опросе селена.