在 selenium webdriver 中将 chrome 'devtools.open_docked' 设置为 false

问题描述 投票:0回答:2

我希望在将 selenium 与水豚一起使用时,chrome 开发工具能够与窗口分离地打开。

当前 devtools 附加在右侧(默认)

我正在使用以下代码:

Capybara.register_driver :chrome do |app|
  capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
    chromeOptions: { 
      args: %w[auto-open-devtools-for-tabs], # <- this works!
      prefs: {'devtools.open_docked' => false} # <- has no effect!
      # also tried {devtools: {open_docked: false}}
      }
  )
  Capybara::Selenium::Driver.new(
    app, browser: :chrome, desired_capabilities: capabilities
  )
end
selenium capybara google-chrome-devtools selenium-chromedriver
2个回答
2
投票

以下是如何为 Capybara 配置 Chrome 首选项,以便默认情况下取消固定开发工具。您还可以配置您想要选择的默认选项卡(我希望“控制台”选项卡默认处于活动状态。)

options = Selenium::WebDriver::Chrome::Options.new
options.add_preference(
  'devtools',
  'preferences' => {
    'currentDockState' => '"undocked"', # Or '"bottom"', '"right"', etc.
    'panel-selectedTab' => '"console"',
  }
)

...

Capybara::Selenium::Driver.new(
  app,
  browser: :chrome,
  options: options,
  desired_capabilities: capabilities,

我通过查看

~/Library/Application Support/Google/Chrome/Default/Preferences
了解了如何设置这些首选项。这是我的主要 Google Chrome 安装存储我的用户首选项的位置,它是 JSON 数据。

您可以在

devtools
=>
preferences
下查看所有可能的设置。请注意,所有值都是解析为 JSON 的字符串,因此您需要“双重包装”代码中的所有字符串:
'"undocked"'

您可以打开主 Google Chrome 浏览器并更改 UI 中的设置,然后重新打开您的首选项文件以查看需要设置的 JSON。


0
投票

感谢您找出这些属性 - 因为我在 Java 中设置这些首选项时遇到了一些麻烦,这里为任何感兴趣的人提供了一个工作示例:

ChromeOptions options = new ChromeOptions();

// Create a Map to hold the preferences
Map<String, Object> devtoolsPreferences = new HashMap<>();
devtoolsPreferences.put("currentDockState", "\"undocked\""); //or bottom - thats what I needed
devtoolsPreferences.put("panel-selectedTab", "\"console\"");

// Add the devtools preferences to ChromeOptions
options.setExperimentalOption("prefs", Map.of("devtools.preferences", devtoolsPreferences));

// Initialize the WebDriver with ChromeOptions
WebDriver driver = new ChromeDriver(options);
© www.soinside.com 2019 - 2024. All rights reserved.