selenium-webdriver - 如何获得与最新 selenium-java 3.x 兼容的 adf-richclient-automation-11.jar
问题描述
我正在为 Oracle ADF 应用程序开发 Selenium 测试。
我正在为此使用:
- JDeveloper fmw_12.2.1.3.0_bpmqs 安装
- 非常有用的库 SelniumTools
我遇到了问题:
基于adf-richclient-automation-11.jar 的 SelniumTools与JDeveloper 一起分发(使用可以在 *Oracle_Home\oracle_common\modules\oracle.adf.view* 文件夹中找到它)并在文档中描述为 Oracle Customized Selenium。
直到2.53.1版本的selenium-java 库一切正常。
但是当我将selenium-java 库升级到3.3.1版本时,我的测试项目出现异常:
org.openqa.selenium.WebDriverException: java.lang.NoSuchMethodError: org.openqa.selenium.support.ui.**WebDriverWait.until(Lcom/google/common/base/Function;)Ljava/lang/Object;** Build info: version: 'unknown', revision: '5234b32', time: '2017-03-10 09:00:17 -0800' System info: host: 'EE-LATITUDE-749', ip: '10.10.207.64', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_172' Driver info: driver.version: unknown
com.redheap.selenium.junit.PageProvider.createPage(PageProvider.java:49)
com.redheap.selenium.junit.PageProvider.goHome(PageProvider.java:36)
ru.russvet.selenium.tests.P6_ProcessPageTest.(P6_ProcessPageTest.java:38)
java.lang.reflect.Constructor.newInstance(Constructor.java:423)
Caused by: java.lang.NoSuchMethodError: org.openqa.selenium.support.ui.WebDriverWait.until(Lcom/google/common/base/Function;)Ljava/lang/Object;
oracle.adf.view.rich.automation.selenium.RichWebDrivers.waitForServer(RichWebDrivers.java:112)
oracle.adf.view.rich.automation.selenium.RichWebDrivers.waitForRichPageToLoad(RichWebDrivers.java:175)
oracle.adf.view.rich.automation.selenium.RichWebDrivers.waitForRichPageToLoad(RichWebDrivers.java:158)
com.redheap.selenium.page.Page.(Page.java:53)
com.redheap.selenium.page.Page.(Page.java:45)
ru.russvet.selenium.pages.BPMWorkspaceLoginPage.(BPMWorkspaceLoginPage.java:19)
com.redheap.selenium.junit.PageProvider.createPage(PageProvider.java:47)
调查原因如下:
1) 在selenium-java 库中,从3.3.1接口开始,直到函数已更改并接受来自Java 8 库而不是Guava 库的函数、谓词 или 供应商类https://github.com/SeleniumHQ/selenium/commit/b2aa9fd534f7afbcba319231bb4bce85f825ef09:
-import com.google.common.base.Function;
-import com.google.common.base.Predicate;
-import com.google.common.base.Supplier;
+import java.util.function.Function;
+import java.util.function.Predicate;
+import java.util.function.Supplier;
2) 最近的 guava 版本(21+ 版本)可能会解决什么问题,其中 Function 和 Predicate 的 Google 版本扩展了 Java 8 等价物
因此,看起来adf-richclient-automation-11.jar是使用selenium-java 库 2.x构建的,并且在运行测试期间会导致异常。
我们通过 Oracle 支持提出了它,但他们还没有关于这个库的新版本的信息。
所以,我的问题是:1)有什么可能的方法来重建adf-richclient-automation-11.jar以使其与最新版本的 selenium-java 3.x 兼容?
2) 有没有人在 JDeveloper 的某些特定发行版中找到更新版本的adf-richclient-automation-11.jar ?
解决方案
曾几何时,我是 Oracle 中构建您所指的自动化库的小团队的一员。
这里的问题是 API 兼容性,除非 ADF 自动化库针对 WebDriver 3.x 重新打包并由 Oracle OTN 重新分发,否则您别无选择,只能坚持使用 Selenium 2.x 库。WebDriver 3.x 适用于 Java 8,这也是 Oracle 希望尽快升级到 3.x 的另一个原因。您是否通过 OTN 论坛或 Oracle 支持提出了您的疑虑?
推荐阅读
- regex - 如何在行之间获取浮点数并将其替换为 Perl 中的计算值?
- python - 检查输入的第一个字符是否是元音不起作用
- java - 创建一个包含 3 个字符串的数组
- javascript - 使用纯 javascript/jquery 保存用户排序的表顺序并将其保存在 php 变量中
- ios - NativeScript 扁平 ActionBar 重叠 ScrollView
- java - Android Firestore 从文档中获取数组列表
- matlab - 实现 SVM Matlab 的函数
- python - 不同种类的 TensorFlow SignatureDef 的目的是什么?
- html - IE 和 Edge 中的 flexbox 最小宽度失败
- android - 来自 JobIntentService 的 ANR,它做的很少