如何使用JAVA在Selenium WebDriver中打开Chrome Developer控制台

时间:2016-03-30 14:03:12

标签: java selenium-webdriver

我想问一下如何在执行selenium测试期间打开Chrome开发者控制台。目前,当测试正在执行时,我手动打开控制台命中F12,测试立即停止响应并在一段时间后失败。

任何人都可以告诉我如何在打开开发人员控制台的情况下启动我的测试,这样我就可以捕获/观察测试执行期间出现的控制台错误。

4 个答案:

答案 0 :(得分:15)

使用--auto-open-devtools-for-tabs

  

此标记使每个标签的Chrome自动打开DevTools窗口。它旨在供开发人员和自动化使用,无需用户交互即可打开DevTools。

Source

How to use

答案 1 :(得分:11)

你做不到。 Chrome驱动程序使用Chrome远程调试协议与浏览器进行通信。这与开发人员控制台也使用的协议相同。不幸的是,Chrome的设计使得一次只能使用协议连接一个客户端,因此这意味着开发人员工具或驱动程序,但不能同时兼顾。

答案 2 :(得分:2)

这在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'
    }
  },
}

答案 3 :(得分:1)

您是否尝试过模拟按键事件以获取在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

希望这有帮助。

有用的链接,如果它确实可以到达任何地方:How to handle the new window in Selenium WebDriver using Java?

编辑:重新阅读问题,不要认为这无论如何都会有效。您的单元测试应该捕获代码逻辑中的错误。您的硒测试应仅测试用户旅程并在用户旅程缩短时捕获错误。 您永远不应该通过硒测试来测试代码逻辑/错误。