如何自动设置chrome标志以启用少量模块?
我有应用程序设计,需要在打开chrome://标志启用几个模块,否则整个应用程序不起作用,对于普通用户来说,它做了如此小的改变。
是否有任何javascript或google应用引擎或其他方法可以从服务器端脚本或某些插件中使用,我可以说点击这个,它会自动启用chrome:// flags中的模块?
答案 0 :(得分:21)
几乎每个Chrome标志都可以通过命令行设置。这是一个quite exhaustive list of command line parameters,但请记住,在新版本中会有更多!
所以基本上你会在已设置这些命令行标志的情况下启动chrome。这是最好的方式。
您无法使用Javascript或其他行为手动设置此项。以编程方式(命令行标志除外)设置此方法的唯一方法是使用Capybara(可以打开和控制浏览器的工具,通常用于运行自动化测试),打开Chrome,然后手动导航到“chrome :// flags“并单击必要的组合框。
Watir是另一个浏览器自动化框架(类似于Capybara),但更容易设置和开始。 Here are examples了解如何打开网页并选择组合框,以下是using it with 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上)[是documented here。通常,WebDriver使用临时--user-data-dir
启动,然后在使用后删除临时文件夹。因此,当您再次运行Chrome时,您设置的任何标记都将丢失!因此,将--user-data-dir
设置为用户的默认配置文件目录,然后将保留您设置的任何标记。
编辑2 :添加了Chrome命令行标记的完整列表
编辑3 :添加了在Webdriver中保留标志的说明
答案 1 :(得分:7)
在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
来电。