问题标签 [webdrivermanager-java]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1326 浏览

selenium - 使用 InternetExplorerDriver 时 deleteAllCookies 或 cleanCookie 导致 UnreachableBrowserException

我已经用 geb 建立了一个小型测试套件,使用 chrome 和 firefox 一切正常,但现在我想扩展我用 IE 执行测试的浏览器,并且由于以前测试中剩余的 cookie,测试总是失败(我' m 执行登录测试后仍然登录)

要加载 IEDriver,我使用来自 bonigarcia 的 webdrivermanager,它执行 InternetExplorerDriver 的 2.53.1.0 版。

来自我的 GebConfig 的片段:

我的测试设置如下所示:

该方法resetBrowser()来自 Geb 并执行以下操作:

这是我的清理工作(在没有它的情况下也尝试过,没有改变任何东西):

resetBrowser()应该删除 cookie,但我读到,只会删除当前域中的 cookie。所以我认为添加类似browser.clearCookies(browser.baseUrl)browser.clearCookies("http://localhost:8080/")之前、之后或代替的东西resetBrowser()应该可以工作。但是,一旦我添加了这一行,IEDriver 就会停止使用以下异常(当我使用时抛出相同的异常driver.manage().deleteAllCookies()):

0 投票
1 回答
708 浏览

java - 为什么设置 PhantomJS 驱动程序时出错?

我正在尝试在 Maven 和 Java 项目中使用 Selenium 和 PhantomJS。

以下是我在 pom.xml 文件中使用的依赖项:

在我的 Java 文件中,我正在尝试使用以下方法设置 PhantomJS 驱动程序,而我的计算机上没有 JAR 文件:

当我第一次尝试这个时,它运行良好,但一两周后,我收到了这个错误:

有人知道要修改什么吗?我迷路了,不知道该怎么办...

0 投票
2 回答
131 浏览

java - 由于我将 Selenium 降级到 2.53.1,因此尝试使用 Firefox 访问本地主机页面时出错

嗨,我需要一点帮助,我正在使用 selenium 3.0.1。但是,我需要更改为 2.53.1,因为 Firefox 尚未实现操作(移动和双击)。

我能够拥有 selenium 3.0.1 的 firefox webdriver。由于我降级了它,我无法运行 Firefox(chrome 和 IE 都不错!)。

我的代码是:

错误是:

org.openqa.selenium.firefox.NotConnectedException:45000 毫秒后无法连接到端口 7055 上的主机 127.0.0.1。火狐控制台输出:

似乎是兼容性问题...但我还没有发现。

谢谢

编辑:我正在使用它来加载 webdriver:https ://github.com/bonigarcia/webdrivermanager

0 投票
1 回答
154 浏览

webdrivermanager-java - 未找到密钥“wdm.geckoDriverVersion”的配置设置 - WebDriverManager

我正在使用 webdrivermanager(Java) 并且我认为已配置 (pom.xml),因为 Chrome 和 IE 正在工作。只有 FireFox 显示此消息“未找到密钥 'wdm.geckoDriverVersion' 的配置设置”

*该示例适用于。

那么,Boni 或其他成员可以帮助我解决这个问题吗?

谢谢。

编辑:

我只有 PhantomJs 和 FireFox 才有这个错误。代码是相同的(示例 git)。首先,我认为那将是 POM,但 Chrome 和 IE 正在工作。谢谢你的支持。

https://i.stack.imgur.com/KJOnO.png

https://i.stack.imgur.com/at3qm.png

0 投票
1 回答
277 浏览

webdrivermanager-java - 如果您使用 .forceCache() 如果还没有任何缓存,会发生什么?

从版本 1.6.0 开始,强制驱动程序引用本地缓存的选项成为一个选项。我想知道如果还没有任何缓存会发生什么?

我之所以问,是因为我有一个依赖于此的项目,我们组织中的几个人都依赖它,如果他们是第一次运行它并且没有缓存任何内容,.forceCache() 会失败还是会退回去驱动程序的远程存储库?

否则,我猜我需要一个初始化方法,它会在第一时间发出并获取它们。感谢您提供任何帮助或信息。

0 投票
2 回答
599 浏览

java - 使用 WebdriverManager 在多个测试线程中注册驱动程序时出错

我使用 TestNG xml 文件来管理测试队列和环境参数。并想使用 WebdriverManager 库在系统中注册驱动程序。但是当线程数超过 1 时,驱动程序没有正确注册。请看下文。

例如,这里是测试配置和驱动程序实例化的示例:

测试1:

测试 2:

如您所见,两者都有“browserName”参数,但其中的值不同。在测试基类中注册驱动程序的示例:

Surefire 插件线程设置:

当测试以 value = 1 的 suitethreadpoolsize 属性运行时,一切正常:

问题:

如果我在surefire插件中设置线程数超过1,

两个 .setup() 方法并行运行,似乎 BrowserManager 中 webdriver 的静态实例被最后一个浏览器名称替换(在我的示例中为 geckodriver)

我想,我以错误的方式使用 CountDownLatch?我该如何处理?

0 投票
1 回答
738 浏览

java - 使用另一个库将驱动程序路径发送到 selenium 节点

在 selenium 网格中注册新节点时,我使用 -D java 参数指定可执行驱动程序的路径:

我想使用 webdrivermanager-java 库(https://github.com/bonigarcia/webdrivermanager)来管理驱动程序可执行文件。但它使用 System.setProperty() 注册驱动程序,因此它仅在运行库的 JVM 中可用(我弄错了吗?)。

我的问题是:

在启动节点之前从命令行调用webdrivermanager-java的正确方法是什么以及如何将下载的驱动程序的路径导出到 selenium 节点的 -D java 参数?

我有一个想法来创建微小的“node-runner”java应用程序并在其中调用webdrivermanager和selenium-server-standalone.jar,因此它们使用相同的JVM环境。

是否有更好的解决方案来使用 webdrivermanager 设置节点的驱动程序路径?

0 投票
3 回答
291 浏览

java - 使用抽象类型进行投射时使用反射

我完全赞成有人为这个特定问题推荐一个更好的标题。我也非常愿意努力简化我描述问题的方式。

上下文:我有一个自动化设置,允许通过属性文件配置浏览器。因此,如果有人在该文件中有“browser=chrome”,那么WebDriver应该实例化的特定实例是ChromeDriver.

我还在使用WebDriverManager,您可以在其中下载特定WebDriver类型的二进制文件。所以在这种情况下,我只想下载该属性文件中的任何浏览器驱动程序。因此,如果那是 Chrome,我想使用ChromeDriverManager.

当然,这里的关键是我必须概括所有这些,因为我不知道有人会使用什么。但出于我的问题的目的,为了说明问题,让我们坚持使用这些移动部件:“chrome” ChromeDriver,,,ChromeDriverManager

代码:

我有一个driverMap包含WebDriver与浏览器名称关联的类的实例。

我也有一个将类与特定类driverManager相关联的方法。BrowserManagerWebDriver

只是为了更多的上下文,所有这些都在一个名为的类中Driver,它的开头是这样的:

这两个变量在这里与下一位相关。调用一个add方法来将特定的浏览器配置添加到测试中。所以这里是那个方法,它显示了当浏览器添加到混合中时如何使用上述方法:

  • 你可以看到我使用driverClass,这将是这样的org.openqa.selenium.chrome.ChromeDriver

  • 你可以看到我使用driverBinary,这将是这样的io.github.bonigarcia.wdm.ChromeDriverManager

但我评论了上面我有问题的那一行。

问题:你可以看到我使用一个driver变量来存储WebDriver实例和一个manager变量来存储BrowserManager实例。

以下是我在以下情况下这样做的方式和原因driver

所以这样做是让我得到ChromeDriver更一般的( )的适当类型( WebDriver)。因此,在我的driver变量上,我能够将反射调用投射到WebDriver并因此引用driver,就好像它是那个实例一样。

我不能做同样的事情manager

而且我不知道这是否是因为那个特定的 Java 库是如何工作的。具体来说:

所以我不能调用方法,manager就好像它是特定类型的BrowserManager(like ChromeDriverManager) 一样driver(这是特定类型的WebDriver, like ChromeDriver)。

这似乎是因为最终WebDriver是一个接口,但却BrowserManager是抽象的。

所以我不知道如何达到我想要的效果。具体来说,我想要的效果是调用相当于这个:

但是我必须使用反射来做到这一点,因为我不知道我将使用哪个经理。所以理想情况下我想要它,这样我就可以做到这一点:

我不知道我可以为了manager工作而放弃什么。或者我不知道一旦我确定了那个类是什么,我是否可以转换到一个特定的类。

我可以完全放弃使用 WebDriverManager,但它是一个很好的解决方案,我希望找到一些方法来做我需要的事情。

0 投票
2 回答
4446 浏览

webdrivermanager-java - 在maven上使用webdrivermanager时如何获取chromeDriver对象?

当我使用下面的代码时,我在驱动程序对象创建者上遇到错误。

我已按照https://github.com/bonigarcia/webdrivermanager的步骤进行操作

0 投票
1 回答
375 浏览

webdrivermanager-java - 无法使用 WebDriverManager 设置 EdgeDriver 版本

我在使用 Edge 运行 Selenium 测试时遇到了麻烦。Windows 将更新版本 4.15063。但目前这个更新不是自动的。但是 Edge 的最新版本已经切换到 4.15063。我正在使用 WebDriverManager 但无法成功使用以前的版本。

不加载以前版本的驱动程序。Webdriver 管理器版本为 1.6.2。我尝试通过以下几种方式为 EDGE 设置版本:

和喜欢

也没有成功。但我可以在调试中检查

根据上述任何方法的设置返回版本结果。尽管 ChromeDriverManager 的相同选项可以正常工作并加载正确版本的驱动程序二进制文件。我猜 DriverManager 中存在一些问题。使用从本地商店下载的二进制文件让我成功运行 EdgeDriver。