Javascript 在默认的NightWatch浏览器实例中启用和修改Chome扩展(特别是ModHeader扩展)
我使用的是NightWatch.js,对于一些UI测试,我想用一些额外的desiredCapabilities启动默认浏览器实例(即,使用一些应用的特定值启用扩展) 注意:我可以执行这些操作,但不能在默认浏览器实例中执行 要完全清楚,手动执行操作看起来如下所示: 扩展链接: 我可以使用存储在pageObject文件中的以下命令启用扩展名并更新值:Javascript 在默认的NightWatch浏览器实例中启用和修改Chome扩展(特别是ModHeader扩展),javascript,selenium,google-chrome-extension,nightwatch.js,mod-headers,Javascript,Selenium,Google Chrome Extension,Nightwatch.js,Mod Headers,我使用的是NightWatch.js,对于一些UI测试,我想用一些额外的desiredCapabilities启动默认浏览器实例(即,使用一些应用的特定值启用扩展) 注意:我可以执行这些操作,但不能在默认浏览器实例中执行 要完全清楚,手动执行操作看起来如下所示: 扩展链接: 我可以使用存储在pageObject文件中的以下命令启用扩展名并更新值: setChromeOptions(url) { const chromeCapabilities = webdriver.Capabilities
setChromeOptions(url) {
const chromeCapabilities = webdriver.Capabilities.chrome();
// setting chrome options
const chromeOptions = {
args:
// path to local ModHeader extension
['--load-extension=/Users/raja.bellebon/AppData/Local/Google/Chrome/User Data/Default/Extensions/idgpnmonknjnojddfkpgkljpfnnfcklj/2.1.2_0/'],
};
chromeCapabilities.set('chromeOptions', chromeOptions);
const driver = new webdriver.Builder().withCapabilities(chromeCapabilities).build();
driver.get('chrome-extension://idgpnmonknjnojddfkpgkljpfnnfcklj/_generated_background_page.html');
// setup ModHeader extension with the header value
driver.executeScript(`
localStorage.setItem('profiles', JSON.stringify([{ /* eslint-env browser*/
title: 'Selenium',
hideComment: true,
appendMode: '',
headers: [
{ enabled: true, name: 'X-Static-Homepage', value: 'true' },
],
respHeaders: [],
filters: [],
}]))`);
driver.get(url);
return this;
}
该函数在测试开始时调用(作为第一步或在之前的中调用)。当我执行代码时,会打开第二个浏览器窗口,并在其中执行操作。同时,主(或默认)浏览器实例没有扩展名如何在主浏览器实例中修改扩展?
在阅读了一些博客之后,我发现我可能需要修改conf.js并在那里应用我的代码,但是我无法获取/修改当前的驱动程序
我头痛得厉害。。。任何帮助都将不胜感激,谢谢 很抱歉回复晚了。我刚刚知道怎么做,所以如果你将来需要的话,我想和大家分享一下
首先,在nightwatch.json文件中,设置所需的功能,如下所示:
"desiredCapabilities": {
"javascriptEnabled": true,
"acceptSslCerts": true,
"browserName": "chrome",
"chromeOptions": {
"args": ["--load-extension=/home/pratik/.config/google-chrome/Default/Extensions/idgpnmonknjnojddfkpgkljpfnnfcklj/2.1.2_0"]
}
}
然后在你的测试中
before: (client) => {
modHeaderPage = client.page.modHeaderPage();
modHeaderPage.setHeader();
homePage = client.page.homePage();
}
您的页面对象如下所示:
module.exports = {
elements: {},
commands: [{
setHeader() {
// set the context on the extension so the localStorage can be accessed
const url = 'chrome-extension://idgpnmonknjnojddfkpgkljpfnnfcklj/2.1.2_0/settings.tmpl.html'; // modHeader extension
this.navigate(url).waitForElementPresent('body', 20000);
// setup ModHeader with header
this.api.execute(`
localStorage.setItem('profiles', JSON.stringify([{ /* eslint-env browser*/
title: 'Selenium',
hideComment: true,
appendMode: '',
headers: [
{ enabled: true, name: 'Header_Name', value: 'Header_Value' },
],
respHeaders: [],
filters: [],
}]))`);
},
}],
};
很抱歉迟了答复。我刚刚知道怎么做,所以如果你将来需要的话,我想和大家分享一下
首先,在nightwatch.json文件中,设置所需的功能,如下所示:
"desiredCapabilities": {
"javascriptEnabled": true,
"acceptSslCerts": true,
"browserName": "chrome",
"chromeOptions": {
"args": ["--load-extension=/home/pratik/.config/google-chrome/Default/Extensions/idgpnmonknjnojddfkpgkljpfnnfcklj/2.1.2_0"]
}
}
然后在你的测试中
before: (client) => {
modHeaderPage = client.page.modHeaderPage();
modHeaderPage.setHeader();
homePage = client.page.homePage();
}
您的页面对象如下所示:
module.exports = {
elements: {},
commands: [{
setHeader() {
// set the context on the extension so the localStorage can be accessed
const url = 'chrome-extension://idgpnmonknjnojddfkpgkljpfnnfcklj/2.1.2_0/settings.tmpl.html'; // modHeader extension
this.navigate(url).waitForElementPresent('body', 20000);
// setup ModHeader with header
this.api.execute(`
localStorage.setItem('profiles', JSON.stringify([{ /* eslint-env browser*/
title: 'Selenium',
hideComment: true,
appendMode: '',
headers: [
{ enabled: true, name: 'Header_Name', value: 'Header_Value' },
],
respHeaders: [],
filters: [],
}]))`);
},
}],
};
所选答案似乎与最新版本的Mod Headers不兼容。
现在有一个selenium版本,我尝试过使用它,但仍然不起作用,所以我所做的是:
找到我的分机所在的位置:
转到已安装的my extension版本:
单击左上角的包扩展(可能会根据chrome版本移动)
在上面写着“扩展根目录”的地方,我输入了在步骤1中找到的位置并单击了“包扩展”
从步骤1中获取目录中创建的crx
文件,将其移动到/extensions/modheader.crx
下的my repo中(此处重命名为crx)
在nightwatch.conf.js中添加了:
添加了与所选答案类似的modHeaderPage:
在安装文件中,我添加了:
现在我可以使用扩展为我的请求添加标题。希望这将帮助其他人,花了太长的时间让它工作:D
下侧是无头的,不适用于扩展
所选答案似乎与最新版本的Mod Headers不兼容。
现在有一个selenium版本,我尝试过使用它,但仍然不起作用,所以我所做的是:
找到我的分机所在的位置:
转到已安装的my extension版本:
单击左上角的包扩展(可能会根据chrome版本移动)
在上面写着“扩展根目录”的地方,我输入了在步骤1中找到的位置并单击了“包扩展”
从步骤1中获取目录中创建的crx
文件,将其移动到/extensions/modheader.crx
下的my repo中(此处重命名为crx)
在nightwatch.conf.js中添加了:
添加了与所选答案类似的modHeaderPage:
在安装文件中,我添加了:
现在我可以使用扩展为我的请求添加标题。希望这将帮助其他人,花了太长的时间让它工作:D
下侧是无头的,不适用于扩展
嘿,谢谢你的回答!你确定它有效吗?我记得我可以用modHeader集开始页面。但不幸的是,我打开了两个选项卡,一个是标题集,另一个是执行测试的地方…如果你只有一个选项卡,并且测试在标题集的页面内执行-很好!!!嘿,谢谢你的回答!你确定它有效吗?我记得我可以用modHeader集开始页面。但不幸的是,我打开了两个选项卡,一个是标题集,另一个是执行测试的地方…如果你只有一个选项卡,并且测试在标题集的页面内执行-很好!!!嘿,伙计,我想你救了我的命。我已经以此为基础,对量角器采用了相同的想法,效果非常好。@Farmijo你能分享一下你的量角器例子吗。我一直在努力将它添加到量角器框架中如何加载多个扩展?嘿,伙计,我想你救了我的命。我已经以此为基础,对量角器采用了相同的想法,效果非常好。@Farmijo你能分享一下你的量角器例子吗。我一直在努力将它添加到量角器框架中。如何加载多个扩展?