【问题标题】:Selenium Edge driver not initializing when called from ant process - java从 ant 进程调用 Selenium Edge 驱动程序时未初始化 - java
【发布时间】:2018-01-23 21:39:59
【问题描述】:

我正在尝试在边缘运行一些硒测试,但遇到了这个问题:

当我从 Java 环境(例如 JDeveloper)运行它们时,一切正常。但是,我们已经建立了一个 ant 进程来从命令行调用测试。当我尝试这样做时,WebDriver 未初始化并引发和未知异常错误。

我很确定错误不在 ant 文件中,因为如果我在 chrome 中运行相同的测试,它可以正常工作。

这是失败的代码部分:

System.setProperty("webdriver.edge.driver","PathToFolder\\MicrosoftWebDriver.exe"); 
DesiredCapabilities capability = DesiredCapabilities.edge();
driver = new EdgeDriver(capability); 

我确定问题不在路径中,因为当我直接从类中运行它时,它工作正常。另外,我检查了内部版本号,并且我有正确的 MicrosoftWebDriver.exe,所以这也不是问题。

我得到的错误如下:

org.openqa.selenium.WebDriverException: Unknown error
[java] Command duration or timeout: 1.20 seconds
[java] Build info: version: '2.48.2', revision: '41bccdd', time: '2015-10-09 19:55:52'
[java] System info: host: 'DIANA', ip: '10.0.75.1', os.name: 'Windows 8.1', os.arch: 'amd64', os.version: '6.3', java.version: '1.7.0_79'
[java] Driver info: org.openqa.selenium.edge.EdgeDriver 

更新: 我能够恢复完整的日志,它是以下内容:

java.lang.Error: org.openqa.selenium.WebDriverException: Unknown error
Command duration or timeout: 1.01 seconds
Build info: version: '2.48.2', revision: '41bccdd', time: '2015-10-09 19:55:52'
System info: host: 'FORMIGA', ip: '172.25.208.1', os.name: 'Windows 8', os.arch: 'amd64', os.version: '6.2', java.version: '1.7.0_25'
Driver info: org.openqa.selenium.edge.EdgeDriver
    at com.wiris.webtester.WebPage.<init>(WebPage.java:126)
    at com.wiris.webtester.Context.initBrowser(Context.java:377)
    at com.wiris.webtester.Context.browse(Context.java:284)
    at com.wiris.webtester.action.BrowseAction.onExecute(BrowseAction.java:25)
    at com.wiris.webtester.action.BaseAction.execute(BaseAction.java:15)
    at com.wiris.webtester.action.TestAction.test(TestAction.java:77)
    at com.wiris.util.test.TestFile.test(TestFile.java:48)
    at com.wiris.util.test.TestList.executeFiltered(TestList.java:187)
    at com.wiris.util.test.TestList.execute(TestList.java:138)
    at com.wiris.webtester.TesterMain.run(TesterMain.java:151)
    at com.wiris.webtester.TesterMain.main(TesterMain.java:194)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.tools.ant.taskdefs.ExecuteJava.run(ExecuteJava.java:221)
    at org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:154)
    at org.apache.tools.ant.taskdefs.Java.run(Java.java:834)
    at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:228)
    at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:137)
    at org.apache.tools.ant.taskdefs.Java.execute(Java.java:110)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293)
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293)
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:402)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293)
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:435)
    at org.apache.tools.ant.Target.performTasks(Target.java:456)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1405)
    at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1260)
    at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:441)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293)
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:435)
    at org.apache.tools.ant.Target.performTasks(Target.java:456)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1405)
    at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1260)
    at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:441)
    at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:105)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293)
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:435)
    at org.apache.tools.ant.Target.performTasks(Target.java:456)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1405)
    at org.apache.tools.ant.Project.executeTarget(Project.java:1376)
    at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
    at org.apache.tools.ant.Project.executeTargets(Project.java:1260)
    at org.apache.tools.ant.Main.runBuild(Main.java:857)
    at org.apache.tools.ant.Main.startAnt(Main.java:236)
    at org.apache.tools.ant.launch.Launcher.run(Launcher.java:287)
    at org.apache.tools.ant.launch.Launcher.main(Launcher.java:113)
Caused by: org.openqa.selenium.WebDriverException: Unknown error
Command duration or timeout: 1.01 seconds
Build info: version: '2.48.2', revision: '41bccdd', time: '2015-10-09 19:55:52'
System info: host: 'FORMIGA', ip: '172.25.208.1', os.name: 'Windows 8', os.arch: 'amd64', os.version: '6.2', java.version: '1.7.0_25'
Driver info: org.openqa.selenium.edge.EdgeDriver
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:206)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:158)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:647)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:247)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:129)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:142)
    at org.openqa.selenium.edge.EdgeDriver.<init>(EdgeDriver.java:152)
    at org.openqa.selenium.edge.EdgeDriver.<init>(EdgeDriver.java:120)
    at com.wiris.webtester.WebPage.<init>(WebPage.java:121)
    ... 75 more

【问题讨论】:

  • 你能用完整的错误堆栈跟踪更新问题吗?
  • 我正要更新它,突然它似乎被修复了......如果我再次收到错误,我会复制它!
  • 错误在另一台机器上再次发生。我编辑了完整的日志!

标签: java selenium selenium-webdriver microsoft-edge


【解决方案1】:

该错误确实给了我们一些提示,如下所示:

java.lang.Error: org.openqa.selenium.WebDriverException: Unknown error
Command duration or timeout: 1.01 seconds
Build info: version: '2.48.2', revision: '41bccdd', time: '2015-10-09 19:55:52'
System info: host: 'FORMIGA', ip: '172.25.208.1', os.name: 'Windows 8', os.arch: 'amd64', os.version: '6.2', java.version: '1.7.0_25'
Driver info: org.openqa.selenium.edge.EdgeDriver

这实质上意味着EdgeDriver 二进制文件根本没有被检测到,并且被未初始化会引发未知错误

您的主要问题是您使用的二进制文件之间的版本兼容性,如下所示:

  • 您正在使用 JDK Version 1.7.0_25 [as per the error stack trace within your question]
  • 您正在使用Selenium Version 2.48.2(发布2015-10-09 19:55:52)[as per the error stack trace within your question]
  • 您正在使用 EdgeDriver(我们的版本 UNKNOWN
  • 您正在使用 Edge Browser(我们的版本 UNKNOWN

分析

很明显:

  • 您的 JDK Version 已过期。
  • EdgeDriver 未检测到二进制文件。

解决方案

  • JDK 更新到最近的 JDK 8u151 级别。
  • Selenium 升级到当前级别Version 3.8.1
  • EdgeDriver 升级到当前的v5.16299 级别。
  • Edge Browser 升级到v16.16299 的支持级别。
  • CleanRe-Build 您的项目通过您的 IDE
  • 清除Browser Cache
  • 运行CCleaner 工具清除所有操作系统杂务。
  • 如果您的Edge Browser 基本版本太旧,请使用Moderate Scan 卸载Web BrowserRevo Uninstaller,并安装Web Browser 的最新GA Released 版本。
  • 执行你的Test

【讨论】:

  • 嗯,如果我进行除 selenium 之外的所有更新,它还能工作吗?我们不希望更新 selenium,因为这意味着对我们没有时间/人员参与的代码进行一些更改。
  • @DianaVallverdu 我觉得这值得一试。万一你失败了,你可以随时恢复。
猜你喜欢
  • 2013-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-05
  • 2016-09-08
  • 2019-08-10
  • 1970-01-01
相关资源
最近更新 更多