Как открыть консоль 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?

Изменить: просто перечитайте вопрос и не думайте, что это все равно сработает. В ваших модульных тестах должны записываться ошибки в логике вашего кода. Тестирование селена должно только проверять поездки пользователей и фиксировать ошибки, когда пользовательская поездка прерывается. Вы никогда не должны тестировать логику кода/ошибку при опросе селена.