2012-06-27 46 views
0

我有Windows文件導入方法和applciation工作正常,如果我手動點擊按鈕,但相同的代碼失敗,如果我運行我的應用程序使用像QTP(Quick Test Professional)奇怪,但真的 - 手動工作,但在自動化工具,如QTP失敗

我突出顯示了加粗的失敗行。 [remoteStream.Write(緩衝液,0,bytesRead);]觸發導入

using (FileStream localStream = File.OpenRead(filePath)) 
      { 

       RemoteFile remoteFile = this.serverComponent.GetUploadFileHandle(filePath); 
       if (remoteFile == null) 
       { 
        stopWatch.Stop(); 

       } 

       using (RemoteFileStream remoteStream = new RemoteFileStream(remoteFile)) 
       { 

        long localFileSize = localStream.Length; 
        long readSoFar = 0; 
        int bytesRead = 0; 
        byte[] buffer = new byte[bufferSize]; 
        while ((bytesRead = localStream.Read(buffer, 0, bufferSize)) > 0) 
        { 

         remoteStream.Write(buffer, 0, bytesRead); 
         readSoFar += bytesRead; 

         progressListener.UpdateFileProgress(firmwareID, readSoFar, localFileSize); 
        } 
       } 

       uploadSuccess = this.server.UploadFileDone(remoteFile); 
      } 
      stopWatch.Stop();     
      progressListener.UpdateFileStatus(firmwareID, uploadSuccess ? FirmwareImportStatus.ImportSuccessful : FirmwareImportStatus.ImportFailed); 
     } 

QTP代碼。 SwfWindow( 「Swfname:= ImportFWImagesWF」)SwfButton。( 「Swfname:= btnNext」, 「文本:=導入」)。點擊

我重寫 C#類。和我結束了有插座例外

我重寫流C#類「System.Net.Sockets.SocketException一個現有的連接被強行關閉遠程主機」。我的類名是RemoteFileStream

服務器代碼

public override void Write(byte[] buffer, int offset, int count) 
    { 
     #region Check Args 
     if (buffer == null) 
     { 
      throw (new ArgumentNullException("The buffer is null")); 
     } 
     if (offset < 0 || count < 0) 
     { 
      throw (new ArgumentOutOfRangeException("The offset or count is negative.")); 
     } 
     if (offset + count > buffer.Length) 
     { 
      throw (new ArgumentException("The sum of offset and count is larger than the buffer length.")); 
     } 
     #endregion 

     _rf.Write(buffer, offset, count);//Exception comes from here 
    } 

注:當我從訪問工具QTP我的應用程序異常僅上升。如果我手動運行我的應用程序沒有問題。是否因爲許可問題?請幫幫我。

+0

嗨,你能描述一下實際的失敗:會發生什麼?你會得到一個異常,或者數據根本就沒有寫入? – Kek

+1

聽起來像它可能是一個權限問題。您應該仔細檢查QTP自動運行時使用的用戶標識,並確保用戶對您正在訪問的文件具有寫入權限。 – jonyamo

+0

它不會觸發或捕捉異常。調試器跳出並消失。我使用了try-catch,但沒有捕捉到。但是當我點擊「打破所有」時,它停止在while循環結束附近。似乎while while循環沒有結束。 – codetoshare

回答

0

當QTP運行步驟時,它可以選擇在應用程序中使用模擬事件(在.NET發生.NET事件的情況下)或模擬設備動作。告訴QTP用於點擊步驟的選項的方法可以是在步驟發生時查看鼠標光標是否移動到按鈕。

如果QTP使用的是事件運行,那麼它可能是因爲它沒有運行應用程序期望的確切事件,因此給出的結果與手動測試期間不同。在這種情況下,您可以嘗試使用DeviceReplay對象(如described here)。

+0

Hi Motti,與它不相關DeviceReplay – codetoshare

+0

@Deepak在這種情況下,對不起,但我不知道可能會導致這:( – Motti

相關問題