首页 > 解决方案 > Selenium webdriver 测试 100% 在本地通过,在 VSTS 服务器上 100% 失败

问题描述

目前在我试图弄清楚为什么某个测试在本地完美运行但在被 VSTS 代理启动时失败的第二周。

程序流程:

我在每一步都有截图和调试输出,失败是在“等待 CSS 覆盖被删除”阶段。它超时等待它,现在不管超时多长时间。

叠加层和微调器正在进行中

屏幕截图显示,即使验证过程成功完成,CSS 叠加层和微调器仍在旋转。它几乎就像被时间卡住了一样。

场景和结果:

标签: c#cssselenium-webdriverazure-devopsautomated-tests

解决方案


文档中需要注意的一件事:

配置为作为服务运行的代理只能使用无头浏览器运行 Selenium 测试。如果您没有使用无头浏览器,或者如果您正在为桌面应用程序运行 UI 测试,则必须将 Windows 代理配置为作为启用自动登录的交互式进程运行。

您还尝试运行 Headless 的事实可能意味着即使您作为服务运行并且仍然出现错误,这可能不是您的问题。在某些情况下,我遇到了通过注销用户或更改屏幕分辨率来远程连接到机器的问题,从而扰乱了未来的测试运行或视频录制。文档继续介绍防止这种情况的方法:

如果您使用远程桌面通过自动登录访问运行代理的计算机,只需断开远程桌面的连接就会导致计算机被锁定,并且在此代理上运行的任何 UI 测试都可能失败。为避免这种情况,请在远程计算机上使用 tscon 命令断开与远程桌面的连接。例如:

%windir%\System32\tscon.exe 1 /dest:console

在此示例中,数字“1”是远程桌面会话的 ID。此数字可能会在远程会话之间发生变化,但可以在任务管理器中查看。或者,要自动查找当前会话 ID,请创建一个包含以下代码的批处理文件:

for /f "skip=1 tokens=3" %%s in ('query user %USERNAME%') do (  
    %windir%\System32\tscon.exe %%s /dest:console 
) 

保存批处理文件并为其创建桌面快捷方式,然后将快捷方式属性更改为“以管理员身份运行”。从此快捷方式运行批处理文件会断开与远程桌面的连接,但会保留 UI 会话并允许运行 UI 测试。


推荐阅读