仅在Teamcity上测试失败

时间:2017-04-25 06:26:34

标签: c# selenium teamcity windows-server-2012-r2

我有一个测试(上传文件),它在本地(在我的电脑上)完美运行,并且在TC上完美运行。 但!当我运行MSTSC(我的服务器上的远程桌面 - Windows Server 2012)并实际观察测试运行时,它仅适用于TC。

当触发器作为TeamCity构建代理的一部分运行并且在我不在远程桌面上时运行我的测试时,它会失败。 顺便说一句,我也尝试在后台运行我在TeamCity构建代理上的测试,但它也失败了。 我点击一个元素以触发弹出窗口打开对话框,然后使用以下内容:

  public static void OpenFileNew(string FileNameToAttach)
    {
        Process pp = Process.GetCurrentProcess();
        if (pp != null)
        {
            IntPtr h = pp.MainWindowHandle;
            SetForegroundWindow(h);
        }

        SendKeys.SendWait("\\\\nas01\\qa\\TestFiles\\" + FileNameToAttach);
        Thread.Sleep(3000);
        SendKeys.SendWait("{ENTER}");
        Thread.Sleep(3000);   
    }

下一步是我检查td标记名是否有特定文字。 上传文件后,td应包含刚刚上传的完整文件名。

 public bool CheckFileNameToUploadExists(string FullFileName)
    {

        bool IsFileExist = false;
        WebDriverWait wait = new WebDriverWait(_webdriver, new TimeSpan(0, 0, 30));
        var TDs = wait.Until(x => x.FindElements(By.TagName("td")));
        for (int i = 0; i < TDs.Count - 1; i++)
        {
            var td = TDs[i].Text.ToString();
            Thread.Sleep(2000);
            _test.Log(LogStatus.Pass, td);
            if(td == FullFileName)
                IsFileExist = true;
        }
        return IsFileExist;
    }

如果它不存在,则调用断言。这实际上就是失败。

1 个答案:

答案 0 :(得分:3)

当您离开远程Destktop会话时,您正在“杀死”Destkop,并且无法SetForegroundWindow

当你离开RDP Session时,你可以编写这个小脚本而不是注销/关闭应用程序:

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

当您想以管理员身份退出会话时运行它。