【问题标题】:How do you automatically open the Chrome Devtools tab within Selenium (C#)?如何在 Selenium (C#) 中自动打开 Chrome Devtools 选项卡?
【发布时间】:2016-10-07 14:30:45
【问题描述】:

我看到有 a relatively new optionopen Chrome with Devtools open from the command line,我已经使用这样的调用从我的 Windows 8.1 命令行开始工作:

c:\Program Files (x86)\Google\Chrome\Application>"chrome.exe" --auto-open-devtools-for-tabs

但是,当我在 Selenium(在 C# 中)创建 ChromeDriver 时尝试在同一个框中添加此选项时,该选项似乎被忽略了。

var options = new ChromeOptions();
options.AddArgument("auto-open-devtools-for-tabs");

string executingAssembly = System.Reflection.Assembly.GetExecutingAssembly().Location;
string driverPath = Path.Combine(Path.GetDirectoryName(executingAssembly), "ChromeWebDriver");
_driver = new ChromeDriver(driverPath, options);

我尝试了一些主题变体,以确保选项完全有效,包括...

var options = new ChromeOptions();
options.AddArguments(new[] { "start-maximized", "auto-open-devtools-for-tabs"});

...和...

var options = new ChromeOptions();
options.AddArgument("start-maximized");
options.AddArgument("auto-open-devtools-for-tabs");

...和...

var options = new ChromeOptions();
options.AddArgument("start-maximized");
options.AddExcludedArgument("auto-open-devtools-for-tabs");

... 以及在每个选项字符串前面设置--。我从其中任何一个中得到的都是最大化的窗口。

我感觉 Selenium 的 Chrome Web 驱动程序不支持 auto-open-devtools-for-tabs 参数,但我不确定为什么它不支持与“完整”应用程序相同的选项集。

任何人都可以在 C# 中使用 Selenium,或者知道为什么它不应该在这种情况下工作?


这与this question 没有什么不同,但我在这里专门询问 C# 的 auto-open-devtools-for-tabs 选项。该提问者声称对选项没有任何运气,并询问如何从“内部”Selenium 打开开发工具,在此选项存在之前明确寻找方法。

【问题讨论】:

    标签: google-chrome selenium selenium-webdriver


    【解决方案1】:

    我在 VS 2017、Selenium v​​3.12.1#、Firefox v60.0.2、Chrome v66、Nunit v3.10.1、Gecko Driver v20.1 和 Chrome 驱动程序 v2.4(均使用 C#)中进行了尝试。

    我尝试搜索 Firefox,但没有成功。我确实找到了 Chrome v66 的解决方案。

    请提供如下个人资料:options.AddArguments("--auto-open-devtools-for-tabs");

    这是一个完整的chrome驱动实现:

    ChromeOptions options = new ChromeOptions();
    options.AddArgument("--start-maximized");
    options.AddArguments("disable-infobars");
    options.AddArguments("--disable-notifications");
    options.AddArguments("--auto-open-devtools-for-tabs");
    driver = new ChromeDriver(DrivePath, options, TimeSpan.FromSeconds(100));
    

    另请参阅此帖子:“List of Chromium Command Line Switches

    以下命令不起作用,这是 Geckodriver 的问题,因此 Gecko 团队必须为此提供一些解决方案或修复:

    driver.FindElement(By.CssSelector("body")).SendKeys(Keys.F12);
    
    Actions action = new Actions(driver); action.SendKeys(Keys.F12); action.Perform();
    
    Actions action = new Actions(driver); action .KeyDown(Keys.Control)
        .SendKeys(Keys.F12).KeyUp(Keys.Control).Perform();
    
    Actions action = new Actions(driver); action.SendKeys(Keys.F12); action.Click();
    

    【讨论】:

      【解决方案2】:

      关注SO-12212504 上的主题并从所选答案开始。

      解决方案之一是使用 F-12 [Key F12 Documentation] 键:

      // without an element
      new Actions(driver).SendKeys(Keys.F12).Perform();
      
      // send keys to body
      new Actions(driver).SendKeys(driver.FindElement(By.XPath("//body")), Keys.F12).Perform();
      

      另一方面,您能否尝试使用AddUserProfilePreference 中的ChromeOptions Methods

      ChromeOptions options = new ChromeOptions();
      options.AddUserProfilePreference("auto-open-devtools-for-tabs", "true");
      

      注意:参数名我不是很清楚,但希望你能找到对应here的东西。


      编辑:更多尝试使用相同的键盘快捷键 -

      Windows:[F12 或 Ctrl + Shift + I]

      String openDevTools = Keys.chord(Keys.CONTROL, Keys.SHIFT, "I");
      driver.FindElement(By.XPath("//body")).SendKeys(openDevTools).Perform();
      

      Mac:[Cmd + Opt + I]

      String openDevTools = Keys.chord(Keys.COMMAND, Keys.ALT, "I");
      driver.FindElement(By.XPath("//body")).SendKeys(openDevTools).Perform();
      

      【讨论】:

      • AddUserProfilePreference 上没有骰子。值得一试;谢谢。但是当我运行它时没有devtools,和以前一样。虽然这是一条不同的路线,但我确实尝试了SendKeys,但它只是间歇性地打开了 devtools。更糟糕的是,它确实有效的时候,我得到了我想我可能的结果,disconnected: received Inspector.detached event\n (Session info: chrome=50.0.2661.102) (Driver info: chromedriver=2.21.371459... 所以还没有运气。
      • 哦,好吧,auto-open-devtools-for-tabs 标志可能应该存在,只是使用它的方式没有在任何地方记录。 stackoverflow.com/a/36957422/1746118
      【解决方案3】:

      Ruby:必须安装最新的 selenium-webdriver (3.7.0) gem

      options1 = Selenium::WebDriver::Chrome::Options.new
      
      options1.add_argument('--auto-open-devtools-for-tabs')
      
      driver = Selenium::WebDriver.for :chrome, options: options1
      
      driver.get("https://stackoverflow.com")
      

      【讨论】:

        猜你喜欢
        • 2021-11-15
        • 2017-09-24
        • 1970-01-01
        • 2017-12-30
        • 2016-04-22
        • 1970-01-01
        • 1970-01-01
        • 2021-01-21
        • 1970-01-01
        相关资源
        最近更新 更多