28

如何自动设置 chrome 标志以启用几个模块?

我设计的应用程序需要在打开 chrome://flags 时启用几个模块,否则整个应用程序将无法正常工作,对于普通用户来说,做如此小的更改是噩梦。

是否有任何 javascript 或 google 应用程序引擎或其他方法可以从服务器端脚本或某些插件中使用,我可以说单击它,它将自动启用 chrome://flags 中的模块?

4

2 回答 2

21

几乎每个 Chrome 标志都可以通过命令行设置。这是一个非常详尽的命令行参数列表,但请记住,在较新的版本中还会有更多!

编辑:这是Chrome 命令行开关的最新综合列表

所以基本上你会在已经设置了这些命令行标志的情况下启动 chrome。这是最好的方法。

您不能使用 Javascript 或其他行为手动设置它。以编程方式设置此设置(命令行标志除外)的唯一方法是使用Capybara(一种可以打开和控制浏览器的工具,通常用于运行自动化测试),打开 Chrome,然后手动导航到“chrome://flags " 并单击必要的组合框。

编辑:Watir 也和 Capybara 一样好

Watir是另一个浏览器自动化框架(类似于 Capybara),但更容易设置和启动。以下是有关如何打开网页并选择组合框的示例,以下是有关在Chrome 中使用它的说明。您可以编写一个 ruby​​ 文件,如下所示:

require 'watir-webdriver'
browser = Watir::Browser.new :chrome
browser.goto "chrome://flags"
browser.select_list(:id => <combo box id>).select("Enabled")
...

使用 WebDriver 时保留标志

Chrome 具有--user-data-dir保存所有配置文件设置的开关。Chrome 使用的默认目录(在 Windows/Mac/Linux 上)[在此处记录。通常,WebDriver 使用临时 启动--user-data-dir,然后在使用后删除临时文件夹。因此,当您再次运行 Chrome 时,您设置的任何标志都将丢失!所以设置--user-data-dir为您用户的默认配置文件目录,然后您设置的任何标志都将被保留。

编辑 2:添加了 chrome 命令行标志的综合列表

编辑 3:添加了在 Webdriver 中保留标志的说明

于 2013-06-16T10:54:05.453 回答
6

在 chrome://flags 屏幕中,我在一个包含的 JS 文件中发现了一些有趣的东西:

/**
 * Invoked when the selection of a multi-value choice is changed to the
 * specified index.
 * @param {HTMLElement} node The node for the experiment being changed.
 * @param {number} index The index of the option that was selected.
 */
function handleSelectChoiceExperiment(node, index) {
  // Tell the C++ FlagsDOMHandler to enable the selected choice.
  chrome.send('enableFlagsExperiment',
              [String(node.internal_name) + '@' + index, 'true']);
  requestFlagsExperimentsData();
}

chrome.send确实是一个有效的方法,

这是同一文件的另一个片段(chrome://flags/flags.js)

/**
 * Asks the C++ FlagsDOMHandler to restart the browser (restoring tabs).
 */
function restartBrowser() {
  chrome.send('restartBrowser');
}

手动调用chrome.send ('restartBroswer')确实重新启动了浏览器。

我认为这提供了自动设置标志所需的所有设施,您需要在chrome://flags源代码中查找所需的标志,然后设置适当的chrome.send调用。

于 2013-06-16T18:58:26.763 回答