selenium - 如何在 Mac 上打包 chromedriver.exe
问题描述
我正在尝试在 Electron 应用程序上使用 Selenium,并且正在使用以下模块:
"chromedriver": "^78.0.1",
"selenium-webdriver": "^4.0.0-alpha.4",
"electron-builder": "^21.2.0",
我在 Mac 上构建了我的应用程序,Selenium 运行良好。但是,当我在寡妇上运行 Electron Selenium 应用程序时,它找不到chromedriver
.
react-electron/node_modules/chromedriver
在下面。
当然它没有chromedriver.exe
,所以我chromedriver.exe
放入chromedriver/bin
。然后我再次构建它,但构建的应用程序不包含chromedriver.exe
. 如何打包chromedriver.exe
到构建的应用程序中?
我申请你的帮助。
解决方案
我找到了解决方案。我将 chromedriver.exe 放入node_modules/chromedriver/lib/chromedriver
.
我可以检查它是否被复制
win-unpacked/resources/app.asar.unpacked/node_modules/chromedriver/lib/chromedriver/chromedriver.exe
当应用程序运行时,chromedriver 可以在C:\Users\user\AppData\Local\Programs\MyApp\resources\app.asar.unpacked\node_modules\chromedriver\lib\chromedriver\chromedriver.exe
我可以像这样获得驱动程序路径。
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();
}
我希望这会对某人有所帮助。
推荐阅读
- c++ - 如何解决我的动态规划问题?
- java - 使用带有 JDBC Bolt 驱动程序的 Neo4j 嵌入式数据库的 Spring Boot 测试
- html - Safari z-index 错误
- android - Android LiveData Observer 没有被第二次触发
- webgl - 如何处理 webglcontextrestored 事件
- extern - 如何防止闭包编译器重命名特定对象的任何属性或方法?
- javascript - 尝试从帮助程序导入 HTML,但 Rails 不喜欢它
- ffmpeg - ffmpeg 将 HDR 转换为 SDR
- image - 如何在颤动的图像上添加交互式图钉?
- javascript - 发送输入值并单击提交按钮外部 url php