自动打开Google Chrome开发者工具是否可行?

13

考虑到Selenium 2关闭了包含我的模拟器配置文件的devtools窗口,并保存在我的chrome用户配置文件中。是否有一种方法可以使用Selenium脚本触发打开devtools窗口?

关于devtools窗口关闭问题的信息如下: https://sites.google.com/a/chromium.org/chromedriver/help/devtools-window-keeps-closing

我试图尝试一些Chromium覆盖参数,只有其中一个有效果,让人感到有些疲惫。 http://peter.sh/experiments/chromium-command-line-switches/

唯一有效果的一个如下:

options.addArguments("user-data-dir=/Path/to/chrome/profile");

如果无法打开开发者工具窗口或面板,是否有一种方法可以初始化仿真器?

6个回答

2

在终端中,输入以下内容:

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --auto-open-devtools-for-tabs

请参阅:https://dev59.com/0qHia4cB1Zd3GeqPWqXV - Dzenly

0
你可以使用Robot类来实现。它可以帮助你在任何浏览器上打开开发者工具。
在你想要打开开发者工具的地方使用以下代码。
    try{
        Robot robot=new Robot();
        robot.keyPress(KeyEvent.VK_F12);
        robot.keyRelease(KeyEvent.VK_F12);  
    }
    catch(Exception ex){
        System.out.println(ex.getMessage());
    }

嗨,Shubham。你有没有想过如何从开发工具的控制台选项卡中捕获文本? - A user

0
你可以使用下面提供的代码,在FireFox浏览器上运行良好,只需更换浏览器即可。
public void open(String url) {
    driver.get(url);
    Actions action = new Actions(driver);
    String pressF12=Keys.chord(Keys.F12,"");
    driver.findElement(By.id("lst-ib")).sendKeys(pressF12);
}

0

正如你提供的相同链接所说,自从2.x版本以后,无法使用ChromeDev工具与Selenium的ChromeDriver一起使用。它们直接冲突,你只能选择其中一个。

唯一的解决办法是暂停所有Chrome驱动的交互性,通过其他自动化框架(如Robots API)启动DevTool,进行必要的操作,然后继续。

但是我可以考虑一下我从开发工具中需要什么,是否有其他方法通过在启动时为Chrome提供正确的配置来满足你的需求?(加载不同的配置文件或模拟设备)


从Chrome 63开始,您现在可以同时使用DevTools和Selenium。请参见多客户端远程调试支持 - Kayce Basques

0

你到底为什么需要Chrome DevTools呢?

  • 是为了监控网络流量吗?为什么不使用带有firebug.xpibrowsermobproxy的FirefoxDriver。
  • 为了在模拟设备的浏览器中打开页面。这可以使用Chrome完成,而无需打开DevTools。

使用Chrome模拟浏览器的WebDriver

这是一个代码片段,您可以使用它来启动特定版本的Chrome浏览器。请注意,关键的一点是deviceName值,它应该与您的Chrome浏览器中提到的值匹配。

public static WebDriver MobileOpen()
{
    Map<String, String> mobileEmulation = new HashMap<String, String>();
    System.setProperty("webdriver.chrome.driver","path/to/chromedriver");
    mobileEmulation.put("deviceName", "Google Nexus 6");
    Map<String, Object> chromeOptions = new HashMap<String, Object>();
    chromeOptions.put("mobileEmulation", mobileEmulation);

    DesiredCapabilities capabilities = DesiredCapabilities.chrome();
    capabilities.setCapability(ChromeOptions.CAPABILITY, chromeOptions);

    WebDriver driver = new ChromeDriver(capabilities);
    return driver;
}

希望这可以帮到你。
编辑:我刚看到这是一个三年前的帖子。那个人可能已经找到回家的路了。 :P

-1
你尝试过使用控制台 API吗?它允许你从JS内部调用一些开发工具函数。

如果你的测试脚本调用按键 [Ctrl+Shift+I],那么这样做可以完成任务吗? - Adam T
Selenium自动化浏览器。你的主要用途是打开开发工具,但你无法对其进行任何操作。 - Johnny

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接