Selenium Webdriver测试100%在本地通过,VSTS服务器上100%失败

时间:2019-02-08 00:53:11

标签: c# css selenium-webdriver azure-devops automated-tests

目前,在我尝试找出为什么某个测试可以在本地完美运行但在被VSTS代理启动时失败的第二周。

程序流程:

  • 从表中选择一行
  • 点击“验证”按钮
  • CSS覆盖使屏幕变暗,微调器位于中间
  • 烤面包机在左下方弹出,显示“验证开始”
  • 旋转器旋转约1.5分钟时间
  • 已删除CSS覆盖
  • 烤面包机弹出左下角,验证成功

我在每个步骤上都有屏幕截图和调试输出,并且失败是在“等待CSS覆盖层被移除”阶段。等待超时,现在不管超时多久。

Overlay and spinner in progress

屏幕截图显示,即使验证过程成功完成,CSS覆盖图和微调框仍在旋转。几乎就像是时间紧迫。

方案和结果:

  • 从本地Visual Studio运行-PASS
  • VSTS代理-失败
  • 通过远程进入并传递确切的命令行作为构建来手动在VSTS Agent上运行-PASS(这让我很生气!)
  • 降级/升级Webdriver-没什么
  • 无头/全模式-没什么
  • 使用不同类型的等待-没什么不同
  • 等待弹出的烤箱而不是CSS-没什么

3 个答案:

答案 0 :(得分:1)

documentation中需要注意的一件事:

  

配置为作为服务运行的代理可以运行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测试运行。

答案 1 :(得分:0)

我将回答我自己的问题:我们创建了一个自动登录的新代理。我们观看了测试运行并按下F12键,控制台中出现了错误。

它正在尝试对用户名进行trim(),测试帐户看起来好像具有用户名,但我想实际上并不是这样。因此,由代理运行时,系统抛出了一个错误并且没有对其进行处理。

处理错误,一切顺利进行。漫长而沮丧的道路要到这里!希望这对以后的人有所帮助。

答案 2 :(得分:0)

请选中Azure DevOps Hands-On-Labs,以开始使用Azure Pipelines中的自动硒测试。希望这会有所帮助...