我做了一個簡單的PrintScreen方法,當我的自動化測試失敗時使用。這只是我可以通過電子郵件發送錯誤和當時屏幕的一個打印屏幕。 這是PrintScreen.Save()的代碼的樣子。當我在我的電腦上運行測試如何可靠地將「PrintScreen」(保存屏幕內容)通過RDP連接?
public static class PrintScreen
{
public static string Save(string fileName)
{
var printScreen = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height);
var graphics = Graphics.FromImage(printScreen);
graphics.CopyFromScreen(0, 0, 0, 0, printScreen.Size);
if (File.Exists(fileName))
File.Delete(fileName);
printScreen.Save(fileName, ImageFormat.Jpeg);
Thread.Sleep(500);
return fileName;
}
}
的方法工作正常。但我們使用另一臺計算機進行計劃的自動化測試。我通過RDP連接到它(自動化測試需要與桌面進行交互,在計算機被鎖定時無法運行。)這是我的問題。有時候,打印屏幕沒有在屏幕上。
所以我的問題是這樣的:有沒有其他的方式來寫一個「更好」的方法,或者在我的當前方法有什麼問題嗎?任何建議,歡迎。
我的調查結論是這樣的。
- 屏幕保護程序或simular滅活。
- 它在我的本地機器上完美運行。
- 當我調試它時,一切正常。
- 遠程計算機只有一個屏幕。
從保存到我丟失的文件可能有任何錯誤?
問候 喬納斯
「有時候,打印屏幕沒有顯示屏幕」意味着你得到一個錯誤,你會得到一個空白的圖像......? – Alex 2012-08-03 08:04:32
'Thread.Sleep'已經看起來有嫌疑了(除了當前遇到的任何問題) - 爲什麼它在那裏? – 2012-08-03 08:04:54
@Alex文件中的輸出爲空或文件dosn't不存在。 – 2012-08-03 08:23:56