我有一个测试(上传文件),它在本地(在我的电脑上)完美运行,并且在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;
}
如果它不存在,则调用断言。这实际上就是失败。
答案 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
)
当您想以管理员身份退出会话时运行它。