【问题标题】:Selenium hangs when starting new remoteWebDriver session using Microsoft Edge web browser on Windows 10 VM在 Windows 10 VM 上使用 Microsoft Edge Web 浏览器启动新的 remoteWebDriver 会话时,Selenium 挂起
【发布时间】:2016-04-21 20:09:36
【问题描述】:

在 Windows 10 VM 上启动 Microsoft Edge 的远程 Web 驱动程序会话时出现错误。 我们有一个配置有多个节点的 selenium 网格,这些节点具有各种操作系统/浏览器组合。除了我们的新 Windows 10 节点之外的所有节点都按预期工作。我们已经使用 Microsoft Edge 浏览器 version=21.10586.0.0 配置了 Windows 10 VM,并在 VM 上添加了 MicrosoftWebDriver。 VM 上的 Web 驱动程序的路径是使用系统属性设置的 -

-Dwebdriver.edge.driver="C:\Selenium\MicrosoftWebDriver.exe"

在我的 selenium 测试中,我实例化了在 Windows 10 VM 上配置为 MicrosoftWebDriver 的 selenium Web 驱动程序。在初始化期间,我设置了远程驱动程序的功能,并且设置了日志输出:

08:57:32.932 INFO - Executing: [new session: Capabilities [{platform=WINDOWS, javascriptEnabled=true, browserName=MicrosoftEdge, applicationName=Win10_EDGE, version=21.10586.0.0}]])
08:57:32.948 INFO - Creating a new session for Capabilities [{platform=WINDOWS, javascriptEnabled=true, browserName=MicrosoftEdge, applicationName=Win10_EDGE, version=21.10586.0.0}]

远程连接已建立,Edge 浏览器在 VM 上打开并且可以运行。此时代码挂起在 selenium 代码中创建远程驱动程序 - selenium-remote-driver-2.53.0.jar

最终它会因错误而超时:

java.util.concurrent.ExecutionException: org.openqa.selenium.WebDriverException: java.lang.reflect.InvocationTargetException
Build info: version: '2.53.0', revision: '35ae25b', time: '2016-03-15 17:00:58'
System info: host: 'xxxx', ip: 'xxx.xx.xxx.xxx', os.name: 'Windows 8', os.arch: 'x86', os.version: '6.2', java.version: '1.7.0_51'
Driver info: driver.version: unknown
        at java.util.concurrent.FutureTask.report(Unknown Source)
        at java.util.concurrent.FutureTask.get(Unknown Source)
        at org.openqa.selenium.remote.server.DefaultSession.execute(DefaultSession.java:183)
        at org.openqa.selenium.remote.server.DefaultSession.<init>(DefaultSession.java:119)
        at org.openqa.selenium.remote.server.DefaultSession.createSession(DefaultSession.java:95)
        at org.openqa.selenium.remote.server.DefaultDriverSessions.newSession(DefaultDriverSessions.java:124)
        at org.openqa.selenium.remote.server.handler.NewSession.handle(NewSession.java:59)
        at org.openqa.selenium.remote.server.handler.NewSession.handle(NewSession.java:1)
        at org.openqa.selenium.remote.server.rest.ResultConfig.handle(ResultConfig.java:111)
        at org.openqa.selenium.remote.server.JsonHttpCommandHandler.handleRequest(JsonHttpCommandHandler.java:79)
        at org.openqa.selenium.remote.server.DriverServlet.handleRequest(DriverServlet.java:204)
        at org.openqa.selenium.remote.server.DriverServlet.doPost(DriverServlet.java:166)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
        at org.openqa.selenium.remote.server.DriverServlet.service(DriverServlet.java:132)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
        at org.openqa.jetty.jetty.servlet.ServletHolder.handle(ServletHolder.java:428)
        at org.openqa.jetty.jetty.servlet.ServletHandler.dispatch(ServletHandler.java:680)
        at org.openqa.jetty.jetty.servlet.ServletHandler.handle(ServletHandler.java:571)
        at org.openqa.jetty.http.HttpContext.handle(HttpContext.java:1526)
        at org.openqa.jetty.http.HttpContext.handle(HttpContext.java:1479)
        at org.openqa.jetty.http.HttpServer.service(HttpServer.java:920)
        at org.openqa.jetty.http.HttpConnection.service(HttpConnection.java:820)
        at org.openqa.jetty.http.HttpConnection.handleNext(HttpConnection.java:986)
        at org.openqa.jetty.http.HttpConnection.handle(HttpConnection.java:837)
        at org.openqa.jetty.http.SocketListener.handleConnection(SocketListener.java:243)
        at org.openqa.jetty.util.ThreadedServer.handle(ThreadedServer.java:358)
        at org.openqa.jetty.util.ThreadPool$PoolThread.run(ThreadPool.java:537)
Caused by: org.openqa.selenium.WebDriverException: java.lang.reflect.InvocationTargetException
Build info: version: '2.53.0', revision: '35ae25b', time: '2016-03-15 17:00:58'
System info: host: 'xxxx', ip: 'xxx.xx.xxx.xxx', os.name: 'Windows 8', os.arch: 'x86', os.version: '6.2', java.version: '1.7.0_51'
Driver info: driver.version: unknown
        at org.openqa.selenium.remote.server.DefaultDriverProvider.callConstructor(DefaultDriverProvider.java:113)
        at org.openqa.selenium.remote.server.DefaultDriverProvider.newInstance(DefaultDriverProvider.java:97)
        at org.openqa.selenium.remote.server.DefaultDriverFactory.newInstance(DefaultDriverFactory.java:60)
        at org.openqa.selenium.remote.server.DefaultSession$BrowserCreator.call(DefaultSession.java:222)
        at org.openqa.selenium.remote.server.DefaultSession$BrowserCreator.call(DefaultSession.java:1)
        at java.util.concurrent.FutureTask.run(Unknown Source)
        at org.openqa.selenium.remote.server.DefaultSession$1.run(DefaultSession.java:176)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
        at java.lang.reflect.Constructor.newInstance(Unknown Source)
        at org.openqa.selenium.remote.server.DefaultDriverProvider.callConstructor(DefaultDriverProvider.java:103)
        ... 9 more
Caused by: org.openqa.selenium.TimeoutException: Timeout (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 917.04 seconds
Build info: version: '2.53.0', revision: '35ae25b', time: '2016-03-15 17:00:58'
System info: host: 'xxxx', ip: 'xxx.xx.xxx.xxx', os.name: 'Windows 8', os.arch: 'x86', os.version: '6.2', java.version: '1.7.0_51'
Driver info: org.openqa.selenium.edge.EdgeDriver
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
        at java.lang.reflect.Constructor.newInstance(Unknown Source)
        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:678)
        at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:249)
        at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
        at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:144)
        at org.openqa.selenium.edge.EdgeDriver.<init>(EdgeDriver.java:152)
        at org.openqa.selenium.edge.EdgeDriver.<init>(EdgeDriver.java:120)
        ... 14 more
13:28:49.532 WARN - Exception: Timeout (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 917.04 seconds

我正在使用: selenium-server-standalone-2.53.0.jar, 来自 Microsoft 网站的 Microsoft WebDriver 2015 年秋季更新

我注意到上面的系统信息列出了 Windows 8 - 即使安装了 Windows 10。

有没有其他人看到过这个问题或知道出了什么问题?

【问题讨论】:

  • 您是否尝试在虚拟机上本地运行脚本?您是否也尝试过使用边缘驱动程序 v14271 ?看起来浏览器没有响应驱动程序。我还要检查连接是否被防火墙阻止。
  • 谢谢,我两个都试试。
  • 我尝试在虚拟机上本地运行一个脚本,它成功了!感谢您的建议。如果不是防火墙问题,这是否意味着 Selenium RemoteWebDriver 存在问题?

标签: selenium selenium-webdriver microsoft-edge


【解决方案1】:

在我成功而痛苦地将 Edge 设置为 Selenium 网格的一部分的过程中,我遇到了非常相似的异常。这里至少有两个可能的问题:

  1. selenium-standalone-server 是在后台启动(例如使用 Task-Scheduler)还是在前台启动? (例如手动或作为启动程序) 边缘驱动程序必须在前台运行,这样它的窗口才能真正显示在桌面上。因此,该节点不能作为 Windows 服务启动,也不能在启动时从 Windows 任务计划程序启动。自动启动节点的最佳方法是配置自动登录并将启动节点的批处理脚本添加到用户的启动程序中,如my article 中所述。

  2. 是否在与 Edge 相同的节点中启用了其他浏览器?众所周知,这会导致问题。建议在同一台机器上启动 2 个单独的节点(当然在不同的端口上):一个仅用于 Edge,第二个用于 IE、FF 和 Chrome。请参阅this answer 了解更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-03
    • 2017-08-12
    • 2010-11-27
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多