仅在Teamcity上测试失败
我有一个测试(上传文件到),它能够在本地完美工作(在我的PC上)并且完美地运行在TC上。 但是!当我运行MSTSC(我的服务器上的远程桌面 - windows server 2012)并且实际观察测试运行时,它仅在TC上运行良好。仅在Teamcity上测试失败
当触发器作为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;
}
如果它不存在,则断言被调用。这实际上是失败。
当您离开远程Destktop会话时,您正在“查杀”Destkop,并且不可能对SetForegroundWindow
。
当你离开RDP会话,而不是注销/关闭应用程序,你可以写这个小脚本:
for /f "skip=1 tokens=3" %%s in ('query user %USERNAME%') do (
%windir%\System32\tscon.exe %%s /dest:console
)
而且当你要退出会话中运行它,作为管理员。
我会给它一个机会,虽然我不确定这个问题是'SetForegroundWindow'在这种情况下 –
如我所料,但不幸的是它并没有帮助 –
确定它做到了。我忘记关闭已打开的Chrome浏览器。 –
什么是“错误信息”? – Smartis
这可能与“交互模式”下弹出的实际窗口的要求有关,在没有连接远程桌面会话的情况下运行时可能无法实现。您的代码似乎假设了一个交互式环境,可以推送密钥,并且窗口四处移动。如果没有活动的RDP会话,情况就不会如此。 – Baldrick
刚刚编辑我的帖子。如果它意味着什么。 –