gpt4 book ai didi

node.js - Selenium 网络驱动程序。通过 selenium grid 运行测试时如何安装 chrome 扩展?

转载 作者:太空宇宙 更新时间:2023-11-03 22:06:22 27 4
gpt4 key购买 nike

我尝试在本地运行我的 chrome 扩展程序的测试。

我有 selenium-server (v.3.141.59)。

我有 chromedriver (v.2.44)

我有 Chrome 浏览器 (v.70.0.3538.110)

和 selenium-webdriver npm 包(v.^4.0.0-alpha.1)

我的 NodeJs 代码成功创建新的 chrome session

        this._driver = new Builder()
.forBrowser('chrome')
.usingServer('http://localhost:4444/wd/hub')
.setChromeOptions(new ChromeOptions()
.addExtensions(config.extensionPath)
//.addExtensions(buffer.toString('base64'))
//.addArguments(`--load-extension=c:\path\to\extension`)
.build();

但是

1) 当我将 selenium-server 作为独立服务器运行时,我的扩展已成功安装并且一切正常

java -jar selenium-server.jar -role standalone

2)当我运行 selenium-server 作为集线器并运行 selenium-server 的另一个实例作为 Node 时,会在没有安装扩展的情况下创建新的 chrome session 。

java -jar selenium-server.jar -role hub

java -Dwebdriver.chrome.driver=C:\path\to\chromedriver -jar selenium-server.jar -port 4445 -hub http://localhost:4444 -role node -browser browserName=chrome

加载扩展的任何带注释的变体都会给出相同的结果。

Node 和独立运行类型之间有什么区别(在扩展加载的上下文中)?或者我的错误在哪里?

我很高兴获得任何帮助!

最佳答案

最近想出了解决方案,这很hacky。在 selenium 的 github 上有一个关于此的线程,但目前不记得了。解决方案是在使用远程集线器时将 chrome 选项功能键作为“goog:chromeOptions”传递。

示例:

setup() {
const options = new Options();
options.addArguments("disable-infobars");
options.addArguments("start-maximized");

options.addExtensions(this.encode(*extension*.crx'));


const caps = new Capabilities();
caps.set("browserName", 'chrome');

//seems like neccessary hack for js bindings
caps.set('goog:chromeOptions', options['options_']);

let driver = await new Builder()
.forBrowser('chrome')
.withCapabilities(caps)
.usingServer(*url*)
.build();
}

encode(file) {
var stream = require('fs').readFileSync(file);
return Buffer.from(stream).toString('base64');
}

关于node.js - Selenium 网络驱动程序。通过 selenium grid 运行测试时如何安装 chrome 扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53614223/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com