如何在Selenium(C#)中自动打开Chrome Devtools选项卡?

时间:2016-06-07 15:31:51

标签: google-chrome selenium selenium-webdriver

我看到有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网络驱动程序不支持auto-open-devtools-for-tabs这个论点,但我不确定为什么它不会支持同一套选项为"完整"应用

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

这与this question没有什么不同,但我在这里特别询问C#的auto-open-devtools-for-tabs选项。该提问者声称没有任何运气的选项,并且询问如何打开""内的#dev; Selenium,在此选项存在之前显式查找方法。

3 个答案:

答案 0 :(得分: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();

另一方面,您可以尝试使用ChromeOptions Methods中的AddUserProfilePreference

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();

答案 1 :(得分: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 :(得分:0)

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")