我正在尝试在Electron应用程序上使用Selenium,并且正在使用以下模块:
"chromedriver": "^78.0.1",
"selenium-webdriver": "^4.0.0-alpha.4",
"electron-builder": "^21.2.0",
我在Mac上构建了我的应用程序,Selenium运行正常。但是,当我在Widows上运行Electron Selenium应用程序时,找不到chromedriver
。
react-electron/node_modules/chromedriver
在下面。
当然它没有chromedriver.exe
,所以我将chromedriver.exe
放入chromedriver/bin
中。然后,我再次构建它,但是构建的应用程序不包含chromedriver.exe
。如何将chromedriver.exe
打包到内置应用中?
我请你帮忙。
答案 0 :(得分:0)
我找到了解决方案。我将chromedriver.exe放入了node_modules/chromedriver/lib/chromedriver
。
我可以检查它是否已复制到
win-unpacked/resources/app.asar.unpacked/node_modules/chromedriver/lib/chromedriver/chromedriver.exe
应用运行时,可以在C:\Users\user\AppData\Local\Programs\MyApp\resources\app.asar.unpacked\node_modules\chromedriver\lib\chromedriver\chromedriver.exe
中对chromedriver进行罚款
我可以这样获得驱动程序路径。
const chromedriver = require('chromedriver');
async getDriverPath() {
let driverPath:string = this.chromedriver.path;
driverPath = await driverPath.replace('app.asar','app.asar.unpacked');
log.info("this.driverPath " + driverPath);
return driverPath;
}
而且,我这样设置驱动程序路径。
const webdriver = require('selenium-webdriver');
const {Builder} = webdriver;
let my_driver;
async startChrome() {
const driverPath = await this.getDriverPath();
const service = new chrome.ServiceBuilder(driverPath).build();
chrome.setDefaultService(service);
my_driver = new Builder().forBrowser('chrome').build();
}
我希望这会对某人有所帮助。