首页 > 解决方案 > 如何获得与最新 selenium-java 3.x 兼容的 adf-richclient-automation-11.jar

问题描述

我正在为 Oracle ADF 应用程序开发 Selenium 测试。

我正在为此使用:

  1. JDeveloper fmw_12.2.1.3.0_bpmqs 安装
  2. 非常有用的库 SelniumTools

我遇到了问题:

基于adf-richclient-automation-11.jar 的 SelniumToolsJDeveloper 一起分发(使用可以在 *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 ?

标签: selenium-webdriveroracle12coracle-adf

解决方案


曾几何时,我是 Oracle 中构建您所指的自动化库的小团队的一员。

这里的问题是 API 兼容性,除非 ADF 自动化库针对 WebDriver 3.x 重新打包并由 Oracle OTN 重新分发,否则您别无选择,只能坚持使用 Selenium 2.x 库。WebDriver 3.x 适用于 Java 8,这也是 Oracle 希望尽快升级到 3.x 的另一个原因。您是否通过 OTN 论坛或 Oracle 支持提出了您的疑虑?


推荐阅读