问题标签 [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.
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()
):
java - 为什么设置 PhantomJS 驱动程序时出错?
我正在尝试在 Maven 和 Java 项目中使用 Selenium 和 PhantomJS。
以下是我在 pom.xml 文件中使用的依赖项:
在我的 Java 文件中,我正在尝试使用以下方法设置 PhantomJS 驱动程序,而我的计算机上没有 JAR 文件:
当我第一次尝试这个时,它运行良好,但一两周后,我收到了这个错误:
有人知道要修改什么吗?我迷路了,不知道该怎么办...
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
webdrivermanager-java - 未找到密钥“wdm.geckoDriverVersion”的配置设置 - WebDriverManager
我正在使用 webdrivermanager(Java) 并且我认为已配置 (pom.xml),因为 Chrome 和 IE 正在工作。只有 FireFox 显示此消息“未找到密钥 'wdm.geckoDriverVersion' 的配置设置”
*该示例适用于。
那么,Boni 或其他成员可以帮助我解决这个问题吗?
谢谢。
编辑:
我只有 PhantomJs 和 FireFox 才有这个错误。代码是相同的(示例 git)。首先,我认为那将是 POM,但 Chrome 和 IE 正在工作。谢谢你的支持。
webdrivermanager-java - 如果您使用 .forceCache() 如果还没有任何缓存,会发生什么?
从版本 1.6.0 开始,强制驱动程序引用本地缓存的选项成为一个选项。我想知道如果还没有任何缓存会发生什么?
我之所以问,是因为我有一个依赖于此的项目,我们组织中的几个人都依赖它,如果他们是第一次运行它并且没有缓存任何内容,.forceCache() 会失败还是会退回去驱动程序的远程存储库?
否则,我猜我需要一个初始化方法,它会在第一时间发出并获取它们。感谢您提供任何帮助或信息。
java - 使用 WebdriverManager 在多个测试线程中注册驱动程序时出错
我使用 TestNG xml 文件来管理测试队列和环境参数。并想使用 WebdriverManager 库在系统中注册驱动程序。但是当线程数超过 1 时,驱动程序没有正确注册。请看下文。
例如,这里是测试配置和驱动程序实例化的示例:
测试1:
测试 2:
如您所见,两者都有“browserName”参数,但其中的值不同。在测试基类中注册驱动程序的示例:
Surefire 插件线程设置:
当测试以 value = 1 的 suitethreadpoolsize 属性运行时,一切正常:
问题:
如果我在surefire插件中设置线程数超过1,
两个 .setup() 方法并行运行,似乎 BrowserManager 中 webdriver 的静态实例被最后一个浏览器名称替换(在我的示例中为 geckodriver)
我想,我以错误的方式使用 CountDownLatch?我该如何处理?
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 设置节点的驱动程序路径?
java - 使用抽象类型进行投射时使用反射
我完全赞成有人为这个特定问题推荐一个更好的标题。我也非常愿意努力简化我描述问题的方式。
上下文:我有一个自动化设置,允许通过属性文件配置浏览器。因此,如果有人在该文件中有“browser=chrome”,那么WebDriver
应该实例化的特定实例是ChromeDriver
.
我还在使用WebDriverManager,您可以在其中下载特定WebDriver
类型的二进制文件。所以在这种情况下,我只想下载该属性文件中的任何浏览器驱动程序。因此,如果那是 Chrome,我想使用ChromeDriverManager
.
当然,这里的关键是我必须概括所有这些,因为我不知道有人会使用什么。但出于我的问题的目的,为了说明问题,让我们坚持使用这些移动部件:“chrome” ChromeDriver
,,,ChromeDriverManager
。
代码:
我有一个driverMap
包含WebDriver
与浏览器名称关联的类的实例。
我也有一个将类与特定类driverManager
相关联的方法。BrowserManager
WebDriver
只是为了更多的上下文,所有这些都在一个名为的类中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,但它是一个很好的解决方案,我希望找到一些方法来做我需要的事情。
webdrivermanager-java - 在maven上使用webdrivermanager时如何获取chromeDriver对象?
当我使用下面的代码时,我在驱动程序对象创建者上遇到错误。
webdrivermanager-java - 无法使用 WebDriverManager 设置 EdgeDriver 版本
我在使用 Edge 运行 Selenium 测试时遇到了麻烦。Windows 将更新版本 4.15063。但目前这个更新不是自动的。但是 Edge 的最新版本已经切换到 4.15063。我正在使用 WebDriverManager 但无法成功使用以前的版本。
不加载以前版本的驱动程序。Webdriver 管理器版本为 1.6.2。我尝试通过以下几种方式为 EDGE 设置版本:
和喜欢
也没有成功。但我可以在调试中检查
根据上述任何方法的设置返回版本结果。尽管 ChromeDriverManager 的相同选项可以正常工作并加载正确版本的驱动程序二进制文件。我猜 DriverManager 中存在一些问题。使用从本地商店下载的二进制文件让我成功运行 EdgeDriver。