为什么 Edge/Selenium 在与托管节点的 Windows 10 虚拟机断开连接时抛出错误?
Why does Edge/Selenium throw an error when disconnected from the Windows 10 virtual machine hosting the node?
我正在努力建立一个可扩展的解决方案来支持 Selenium Edge 测试。首先,Edge 不能 运行 作为 Windows 服务。其次,一台机器上一次只能有一个 Edge 测试实例 运行。第三,当使用虚拟 Windows 10 机器托管节点和 Edge 时,当远程桌面会话断开连接时,测试失败。
下面是与 Windows 10 虚拟机的远程桌面连接断开时出现的错误(但用户仍登录到 VM):
结果消息:初始化方法 SeleniumTests.LeftNavigationTests.Init 抛出异常。 System.InvalidOperationException:System.InvalidOperationException:window 大小操作失败,因为 window 当前不可用。
只有在远程会话不活动时才会出现此问题。连接后测试 运行 正常。
有没有人以前见过这个问题并找到解决方法?任何帮助将不胜感激!
系统信息:
- Windows 10 个虚拟机:版本 10.0.15063 内部版本 15063
- 微软边缘 40.15063.674.0
- Microsoft EdgeHTML 15.15063
- Microsoft 网络驱动程序:15063
- 硒:3.12.0
- Selenium 节点 运行 在 Windows 10 VM 上的控制台 window 中。
看起来这就是 Edge 当前的设计方式。当桌面处于非活动状态时,浏览器不再以同样的方式工作。很像在生命周期中进入活动内存的应用程序。
我找到的唯一修复方法是 运行 一个批处理文件,它使您的会话处于活动状态,同时将您踢出远程会话,就好像另一个用户正在尝试启动一个新的远程会话一样。这是批处理文件的内容。
Create a batch file with this code called DisconnectRDP and run as administrator:
for /f "skip=1 tokens=3" %%s in ('query user %USERNAME%') do (
%windir%\System32\tscon.exe %%s /dest:console
)
Create a desktop shortcut to this file. To do this, right-click the batch file and select Send to | Desktop (create shortcut).
In the shortcut properties, click Advanced and select Run as administrator.
如果您遇到桌面锁定问题,您可以尝试更改注册表中的以下设置。
- 打开注册表(执行本地 Windows 搜索 regedit)
- 导航到注册表中的以下文件夹:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
- 将 AutoAdminLogon 设置为 1
- 如果需要,设置默认域名
- 设置默认用户名
- 创建默认密码并适当设置
另一个问题是 Edge 似乎一次只支持一个 Selenium 会话。这使得很难扩展测试。
我正在努力建立一个可扩展的解决方案来支持 Selenium Edge 测试。首先,Edge 不能 运行 作为 Windows 服务。其次,一台机器上一次只能有一个 Edge 测试实例 运行。第三,当使用虚拟 Windows 10 机器托管节点和 Edge 时,当远程桌面会话断开连接时,测试失败。
下面是与 Windows 10 虚拟机的远程桌面连接断开时出现的错误(但用户仍登录到 VM):
结果消息:初始化方法 SeleniumTests.LeftNavigationTests.Init 抛出异常。 System.InvalidOperationException:System.InvalidOperationException:window 大小操作失败,因为 window 当前不可用。
只有在远程会话不活动时才会出现此问题。连接后测试 运行 正常。
有没有人以前见过这个问题并找到解决方法?任何帮助将不胜感激!
系统信息:
- Windows 10 个虚拟机:版本 10.0.15063 内部版本 15063
- 微软边缘 40.15063.674.0
- Microsoft EdgeHTML 15.15063
- Microsoft 网络驱动程序:15063
- 硒:3.12.0
- Selenium 节点 运行 在 Windows 10 VM 上的控制台 window 中。
看起来这就是 Edge 当前的设计方式。当桌面处于非活动状态时,浏览器不再以同样的方式工作。很像在生命周期中进入活动内存的应用程序。
我找到的唯一修复方法是 运行 一个批处理文件,它使您的会话处于活动状态,同时将您踢出远程会话,就好像另一个用户正在尝试启动一个新的远程会话一样。这是批处理文件的内容。
Create a batch file with this code called DisconnectRDP and run as administrator:
for /f "skip=1 tokens=3" %%s in ('query user %USERNAME%') do (
%windir%\System32\tscon.exe %%s /dest:console
)
Create a desktop shortcut to this file. To do this, right-click the batch file and select Send to | Desktop (create shortcut).
In the shortcut properties, click Advanced and select Run as administrator.
如果您遇到桌面锁定问题,您可以尝试更改注册表中的以下设置。
- 打开注册表(执行本地 Windows 搜索 regedit)
- 导航到注册表中的以下文件夹:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
- 将 AutoAdminLogon 设置为 1
- 如果需要,设置默认域名
- 设置默认用户名
- 创建默认密码并适当设置
另一个问题是 Edge 似乎一次只支持一个 Selenium 会话。这使得很难扩展测试。