2015-07-09 58 views
0

我正在研究性能測試Web應用程序的原始方式。基本上,我想從.NET執行一個Web請求到一個特定的URL,返回一些結果。我遇到的問題是我似乎正在獲得某種類型的中間頁面作爲結果;結果應該是來自數據庫的對象列表,其頁面標題爲「高級搜索結果」,但是我的代碼正在提供標題爲「正在...」的內容。我最初試圖在PowerShell中做到這一點,似乎有相同的結果,所以我認爲我可能在C#中運氣更好。這是我到目前爲止:在.NET中進行Web請求並等待服務器返回完整結果

using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Text; 
    using System.Threading.Tasks; 
    using System.Net; 
    using System.Net.Http; 
    using System.IO; 

    namespace QTesting 
    { 
     class Program 
     { 
      static void Main(string[] args) 
      { 
       WebRequest wr = WebRequest.Create("https://u.spart.com/u.Int/AdvSearchResults/Person/220001305"); 
       wr.Method = "GET"; 
       wr.Credentials = CredentialCache.DefaultCredentials; 
       WebResponse response = wr.GetResponse(); 
       Console.WriteLine(((HttpWebResponse)response).StatusDescription); 
       Stream dataStream = response.GetResponseStream(); 
       StreamReader reader = new StreamReader(dataStream); 
       string responseFromServer = reader.ReadToEnd(); 
       Console.WriteLine(responseFromServer); 
       reader.Close(); 
       response.Close(); 
      } 
     } 
    } 

最終,如果我能得到這個工作,我想收集返回這些結果所需的時間。

謝謝!

託尼

+0

好吧,所以它從捕獲在Fiddler中的流量看起來有200個結果是「等待...「頁面,然後是302,然後是另外200個具有我正在查找的所有數據。這不意味着它是重定向嗎? –

+0

進一步的分析表明它是重定向的,因爲如果我從Safari Jones推薦關閉重定向,結果來自302頁面......它必須是某種運行Ajax或JS的頁面,它會填充頁面...什麼屬性會我正在尋找從原始頁面發送後續請求?這不就是ResponseUri嗎?我已經嘗試在獲得ResponseUri後啓動另一個WebRequest,並且得到相同的結果...是否有某種方法可以提出請求? –

+0

啊,我想我已經確定了這個問題。有一個正在提交的隱藏表單。我將不得不更深入地瞭解這個...有沒有人知道任何發佈到Web服務器或整個來回過程的好例子? –

回答

0

嘗試啓用重定向:

WebRequest wr = WebRequest.Create("https://u.spart.com/u.Int/AdvSearchResults/Person/220001305"); 
wr.MaximumAutomaticRedirections=10; 
wr.AllowAutoRedirect=true; 

很多網站重定向沒有你意識到,默認的WebRequest不會。但是你可以按照上面的方式啓用它。最大值只是一個佔位符,您可以根據需要增加或減少此值,但我建議您將其保留以避免無限重定向或重定向循環。

+0

我嘗試過,但Visual Studio是說WebRequest不包含MaximumAutomaticRedirections或AllowAutoRedirection ...任何想法? –

+0

啊,沒關係,我把WebRequest包裝在HttpWebRequest中,所有的錯誤都清除了,但還是沒有走...標題仍然是「正在...」 –

1

頁面可能使用AJAX,並且您首先會在加載結果時用JS代碼替換「Working ...」標題來獲取空白頁面。 您必須使用像Fiddler這樣的代理來識別JS代碼發送到目標網站的請求,然後將其添加到測試代碼中:我的意思是您的代碼必須請求原始頁面,然後請求新的URL。很容易,新的URL將用JSON對象來回答。 這樣你就可以模擬整個頁面加載服務器端。 另一種方法可能是使用Selenium來模擬真實的瀏覽器,並且你不需要關心JS的功能。這是可行的功能測試,但不適用於大規模的負載測試,因爲您可以在您的機器上產生的Selenium驅動程序的數量有限

+0

我得試試這個。你有沒有硒的資源來完成這項工作?我以前從未使用過......謝謝! –

+0

對不起,我通常遵循第一種方法 –