如何将 ChromeDriver 包含在 JAR 中?

2024-04-20

我正在编写一个网络自动化程序,到目前为止,它使用 Selenium 的 FirefoxDriver 运行良好。但是,如果未安装 Firefox,我想让它使用 Chrome。我下载了 ChromeDriver,将其放入 Eclipse 项目的文件夹中,然后运行它。我添加后System.setProperty("webdriver.chrome.driver", "Drivers/chromedriver.exe");效果很好。但是,当我尝试导出它时(使用 Eclipse 的标准导出)。它崩溃了,我相信是因为它找不到 ChromeDriver(我认为这是因为用 FirefoxDriver 导出它效果很好)。

我尝试将 .JAR 更改为 .ZIP 以便查看内部,我发现driver文件夹被剥离,简单地说chromedriver.exe在顶级 JAR 内。我尝试将属性更改为System.setProperty("webdriver.chrome.driver", "chromedriver.exe");但仍然崩溃。

有谁知道为什么导出的JAR找不到chromeDriver,尽管我已经验证它在 JAR 中?

谢谢, 丹尼尔


你必须在运行之前解压它。 将您的驱动程序复制到 src/resources/drivers/chromedriver.exe 下

现在,每当您运行此代码时,它都会在您放置 Runnable jar 的位置创建一个新文件夹“Driver”并复制您可以访问的驱动程序。

ClassLoader classLoader = getClass().getClassLoader();
                URL resource = classLoader.getResource("resources/drivers/chromedriver.exe");
                File f = new File("Driver");
                if (!f.exists()) {
                    f.mkdirs();
                }
                File chromeDriver = new File("Driver" + File.separator + "chromedriver.exe");
                if (!chromeDriver.exists()) {
                    chromeDriver.createNewFile();
                    org.apache.commons.io.FileUtils.copyURLToFile(resource, chromeDriver);
                }
                System.setProperty("webdriver.chrome.driver", chromeDriver.getAbsolutePath());
                driver = new ChromeDriver();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 ChromeDriver 包含在 JAR 中? 的相关文章

  • 如何使用 Talend Open Studio Data Integration 创建属性文件?

    我曾经使用 Talend Open Integration studio 创建作业并从 IDE 运行它或将其导出为可执行 jar 文件 但我并没有广泛使用它 是否可以创建一个包含不同服务器名称和其他变量的外部配置文件 以便在创建 Talen
  • 按钮和窗口之间的空间

    我这里有这段代码 其想法是在主窗口中在文本区域旁边有两个按钮 但我尚未添加 在尝试使用 GridBagLayout 并在此过程中扯掉我的头发后 我决定不使用布局并在不可调整大小的窗口内手动放置按钮 import java awt impor
  • 当 SwingWorker 在后台工作时,对话框没有响应

    基本上我得到了一个以 main 方法作为入口点的 JFrame 在这个主要方法中 程序必须下载一些图像 为了通知用户程序将随时启动 我想显示一个简单的对话框 如果我将对话框设置为模式 我必须在启动程序后关闭它才能触发下载 如果我将其设置为非
  • API 级别 15 的印地语字体(又名 Android 4.0.2)

    我有一个基于印地语内容的 Android 应用程序 并使用了 Android API 16 SDK 中的 devangiri 字体 并重命名为印地语 ttf 文本在 API 级别 16 和 17 上渲染良好 但在 Android API 级
  • 为什么我们在Java中使用接口引用类型? [复制]

    这个问题在这里已经有答案了 我即将参加第一门面向对象编程课程的期末考试 但我仍然不明白多态性的概念 假设我有一个抽象类 Vehicle 该类有一个名为 Aircraft 的子类 我的问题是 这两个代码有什么不同 Aircraft Jetpl
  • 查找“”之间的字符串的正则表达式是什么

    我有一个字符串如下 http 172 1 10 1 3 http 192 168 15 2 6 http 192 168 1 100 1 2 8 内的字符串是一个标签 内的字符串是前面标签的值 返回我的正则表达式是什么 标签 http 17
  • “赠送”应用内购买 Android

    有没有办法将 Google Billing 中的应用内购买 赠送 给特定帐户 我把这个问题放在这里是因为如果有一种方法可以以编程方式完成它 那很好 但不是必须的 在官方文档中找不到任何相关内容 我想要这个的原因是因为我的一个应用程序目前处于
  • 将泛型与 Firebase snapshot.getValue() 结合使用的最佳实践

    TL DR 如何正确使用 Firebase DataSnapshot getValue 的泛型类 用例 我想使用 Firebase 为我的所有实体 其中一堆 实现一个通用远程数据源类 当监听数据更改时 我想从 datasnapshot 获取
  • 无法在 Vaadin Maven 项目上运行 mvn vaadin:compile

    当我运行命令 mvn vaadin compile 时出现此错误 INFO BUILD FAILURE INFO INFO Total time 1 039s INFO Finished at Thu Mar 20 11 35 00 CET
  • Struts 2 - 使用 CKEditor 拦截上传的图像文件

    我有一个CKEditor在网站的不同页面上 所以我将上传内容设置为true以及让它工作的所有配置内容 并且图像上传工作得很好 Send it to the Server 标签 但从这里我想拦截或互动upload函数能够将图像上传到文件夹中
  • 无法初始化类 io.confluence.kafka.schemaregistry.client.rest.RestService

    我正在尝试使用 KafkaAvroSerialzer 设置一个卡夫卡生产者以获得价值 当 rit 尝试创建生产者时 我遇到了这个错误 我正在使用 confluence 5 2 1 中提供的所有罐子 java lang NoClassDefF
  • 更新写入 java 文本文件的对象

    将 Java 对象或列表写入文本文件是可以的 但我想知道如何更新或重写以前写入的对象而不再次写入对象 例如 假设有一个 java util List 有一组对象 然后将该列表写入文本文件 然后稍后该文件将被再次读取并从列表中获取所有对象 然
  • 修改void函数的输入参数并随后读取它

    我有一个相当复杂的 java 函数 我想使用 jUnit 进行测试 并且我正在使用 Mockito 来实现此目的 这个函数看起来像这样 public void myFunction Object parameter doStuff conv
  • Android studio - 如何使用 gradle 中的可执行 jar 文件

    所以我有一个 custom rules xml 文件 我试图在 gradle 中重建 到目前为止 我对其他所有事情都没有问题 但我试图完成的最后一部分是在我使用 gradle 构建过程生成的未签名 apk 上运行一个特殊的 apk 签名工具
  • 使用当前日期时间的 RecyclerView 的动态节标题

    我将使用 RecyclerView 作为节标题 我想在 SQLite 数据库中插入每个日期和时间数据时创建节标题 我按照以下链接获取了此解决方案 但没有成功 请参考下图 对于上面的图像数据 使用以下代码或部分是静态的 List
  • JJWT依赖混乱

    我继承了一个java项目 在POM xml中有这个
  • Java HashMap 与 ArrayList 相比的内存开销

    我想知道java HashMap与ArrayList相比的内存开销是多少 Update 我想提高搜索一大包 600 万以上 相同对象的特定值的速度 因此 我正在考虑使用一个或多个HashMap来代替ArrayList 但我想知道 HashM
  • 无法在 JDBCPreparedStatement 中使用 LIKE 查询吗?

    查询代码及查询方式 ps conn prepareStatement select instance id from eam measurement where resource id in select RESOURCE ID from
  • MongoDB 和 upsert 问题

    我有两个模型 1 资源假期 Id private String resourceID private List
  • 尝试从输入流检索文本时应用程序挂起

    情况 我确实查看了您的代码 正如我怀疑的那样 您的问题与您发布的代码完全无关 您的 GUI 完全忽略 Swing 线程规则 并在主 Swing 事件线程 称为Event Dispatch T螺纹或EDT 由于该线程负责所有 Swing 绘图

随机推荐

  • 在 Inno Setup 中添加 4 个许可证页面

    我遵循了马丁的回答here https stackoverflow com questions 34592002 how to create two licensefile pages in inno setup在我的 Inno Setup
  • 递归函数:检查 Java 中的回文数

    我有一个类检查字符串是否是回文 我有两个问题 1 这是检查回文的最有效方法吗 2 这可以递归实现吗 public class Words public static boolean isPalindrome String word Stri
  • 在 Python 中继承方法的文档字符串

    我有一个带有文档字符串的面向对象层次结构 需要与代码本身一样多的维护 例如 class Swallow object def airspeed self Returns the airspeed unladen raise NotImple
  • Swift Firebase 访问子快照数据

    我目前正在尝试从 Swift 中的子快照访问数据 这是我的代码 在 Swift 3 Firebase 更新之前有效 if let achievements snapshot1 childSnapshotForPath Achievement
  • 如何动态地将 OR 运算符添加到 LINQ 中的 WHERE 子句

    我有一个可变大小的字符串数组 我试图以编程方式循环遍历该数组并匹配表中的所有行 其中 Tags 列至少包含数组中的一个字符串 这是一些伪代码 IQueryable
  • 在 Google Compute Engine 虚拟机之间共享永久性磁盘

    来自谷歌的文档 可以将永久磁盘附加到多个实例 但是 如果您将永久磁盘附加到多个实例 则所有实例都必须以只读模式附加永久磁盘 无法以读写模式将永久磁盘附加到多个实例 如果您以读写模式附加永久磁盘 然后尝试将该磁盘附加到后续实例 Google
  • FileOutputStream (Apache POI) 保存时间过长

    当我使用 Apache poi 编辑 xlsx 文件时 保存时间太长 xlsx 文件包含公式格式设置和冻结窗格 我正在使用以下代码 try FileInputStream file new FileInputStream new File
  • 确定 Base64 字符串或缓冲区是否包含没有元数据的 JPEG 或 PNG?可能的?

    有没有办法使用节点来做到这一点 无论是本机还是通过插件 我想要完成的是根据输入类型选择无损或有损图像压缩 对大型 JPEG 进行无损存储是一场存储灾难 PNG 文件的前八个字节始终包含以下值 请参阅PNG规格 http www libpng
  • Subversion (svn + tortoiseSvn) 提交未锁定文件

    我经历过颠覆的奇怪功能 我们使用最新的 1 6 Svn 服务器 Visualsvn 和 tortoisesvn 1 6 6 我们已经为文件定义了属性 svn needs lock 那么如果您从不同位置复制文件 它会显示本地更改 如果您尝试提
  • 如何实现固定长度的空间金字塔池化层?

    我想实现所介绍的空间金字塔池层在本文中 https arxiv org pdf 1406 4729v4 pdf 正如论文设置 关键点是定义 max pooling 层的变体内核大小和步幅大小 即 kernel size ceil a n s
  • 使用 jack 时,Lambda 表达式会在 Android 中崩溃并出现 IncompleteClassChangeError

    我在我的 Android 项目中使用 Java 8 我已经设置了 Jack 在 android 应用程序模块中 和 Retrolambda 在其他模块中 我遇到的问题是 当我尝试使其使用类变量 并且我可以在任何模块中重现它 时 我的 Lam
  • fork() & 内存分配行为

    我在一个禁用交换和禁用内存过量使用的系统上工作 假设我的进程当前消耗 100 MB 内存 而系统可用内存小于 100 MB 如果我执行 fork 它会失败 因为内核也尝试为子进程分配 100 MB 的空间吗 我读过 Linux 在分叉时使用
  • iOS 7 下 UITableView 部分索引相关崩溃

    我有一个简单的表视图部分索引 第一次看起来很好 但如果发生某些类型的交互 强制重新绘制部分索引 则崩溃 方法是 通过点击其中一个单元格来推动视图控制器 点击表视图标题中的搜索栏或以其他方式使其成为第一响应者 转到信息屏幕 然后返回带有该表视
  • 如何更改sqlite中的数据库名称?

    我必须简单地更改数据库名称 但似乎ALTER DATABASE命令在 SQLite 中无效 我的场景是我有一个 SQLite 加密数据库 现在我想重命名它 手动重命名 db 文件后 加密不起作用 所以我尝试使用命令更改数据库的名称 看起来问
  • 如何修复错误:spawnSync powershell.exe ENOENT

    我想使用以下命令通过提升的 PowerShell 控制台安装 Windows 构建工具 npm install global production windows build tools 但每次运行时我都会收到以下错误npm install
  • 如何解决这个java.lang.RuntimeException?

    Google 开发者控制台显示我的应用程序在过去一个月中收到了两个相同的错误 但是这个RuntimeException没有指定错误源自的类或文件 我看不出什么具体的东西 以下是两种不同设备的错误 三星 Galaxy S8 Active cr
  • 在反应本机地图上显示用户位置

    如何在 React Native 地图上显示用户位置
  • 如何以编程方式更改 log4j2 中的 AppenderRef Level?

    我怎样才能改变AppenderRef Level在 log4j2 中 有一个堆栈溢出问题 https stackoverflow com questions 41427352 带答案 这是通过非编程方式解决的 我想要相同的但以编程方式代替
  • Google App Engine 是否识别并使用 .htaccess 文件?

    我正在使用 Google App Engine Launcher 在本地测试我的应用程序localhost 8080 我猜 Google App Engine Launcher 使用 Python 在本地运行服务器 但我读过 htacces
  • 如何将 ChromeDriver 包含在 JAR 中?

    我正在编写一个网络自动化程序 到目前为止 它使用 Selenium 的 FirefoxDriver 运行良好 但是 如果未安装 Firefox 我想让它使用 Chrome 我下载了 ChromeDriver 将其放入 Eclipse 项目的