如何在Mac上打包chromedriver.exe

时间:2019-10-31 16:35:59

标签: selenium electron selenium-chromedriver

我正在尝试在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在下面。

enter image description here

当然它没有chromedriver.exe,所以我将chromedriver.exe放入chromedriver/bin中。然后,我再次构建它,但是构建的应用程序不包含chromedriver.exe。如何将chromedriver.exe打包到内置应用中?

我请你帮忙。

1 个答案:

答案 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();
    }

我希望这会对某人有所帮助。