如何自动设置 chrome 标志以启用几个模块?
我设计的应用程序需要在打开 chrome://flags 时启用几个模块,否则整个应用程序将无法正常工作,对于普通用户来说,做如此小的更改是噩梦。
是否有任何 javascript 或 google 应用程序引擎或其他方法可以从服务器端脚本或某些插件中使用,我可以说单击它,它将自动启用 chrome://flags 中的模块?
如何自动设置 chrome 标志以启用几个模块?
我设计的应用程序需要在打开 chrome://flags 时启用几个模块,否则整个应用程序将无法正常工作,对于普通用户来说,做如此小的更改是噩梦。
是否有任何 javascript 或 google 应用程序引擎或其他方法可以从服务器端脚本或某些插件中使用,我可以说单击它,它将自动启用 chrome://flags 中的模块?
几乎每个 Chrome 标志都可以通过命令行设置。这是一个非常详尽的命令行参数列表,但请记住,在较新的版本中还会有更多!
所以基本上你会在已经设置了这些命令行标志的情况下启动 chrome。这是最好的方法。
您不能使用 Javascript 或其他行为手动设置它。以编程方式设置此设置(命令行标志除外)的唯一方法是使用Capybara(一种可以打开和控制浏览器的工具,通常用于运行自动化测试),打开 Chrome,然后手动导航到“chrome://flags " 并单击必要的组合框。
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")
...
Chrome 具有--user-data-dir
保存所有配置文件设置的开关。Chrome 使用的默认目录(在 Windows/Mac/Linux 上)[在此处记录。通常,WebDriver 使用临时 启动--user-data-dir
,然后在使用后删除临时文件夹。因此,当您再次运行 Chrome 时,您设置的任何标志都将丢失!所以设置--user-data-dir
为您用户的默认配置文件目录,然后您设置的任何标志都将被保留。
编辑 2:添加了 chrome 命令行标志的综合列表
编辑 3:添加了在 Webdriver 中保留标志的说明
在 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
调用。