2013-06-20 65 views
4

我們想在一個網站的某些任務自動化,就像有一個用戶登錄「,執行某些功能,閱讀他們的帳戶歷史記錄等在C#編程模擬瀏覽器/ .NET

我們試圖模仿這一與正常的POST/GETs,但問題是,例如'登錄',網站使用JavaScript代碼來執行AJAX調用,並且還生成一些隨機令牌。

是否可以從字面上模擬網絡瀏覽器?例如:

  • 訪問 'WWW [測試網站] .com上。'
  • 填充這些DOM項目
    • DOM項目 '用戶名' 中填入 'testuser的'
    • DOM項目「密碼 '填寫與 'testpass'
    • 點擊' 按鈕DOM項目 'btnSubmit按鈕'
  • 訪問帳戶歷史
    • 讀取HTML(所以我們可以分析有關每個不同的歷史項目信息)
  • ...

以上可以轉化成說,下面的示例代碼:

var browser = new Browser(); 
var pageHomepage = browser.Load("www.test-domain.com"); 
pageHomepage.DOM.GetField("username").SetValue("testUser"); 
pageHomepage.DOM.GetField("password").SetValue("testPass"); 
pageHomepage.DOM.GetField("btnSubmit").Click(); 
var pageAccountHistory = browser.Load("www.test-domain.com/account-history/"); 
var html = pageAccountHistory.GetHtml(); 
var historyItems = parseHistoryItems(html); 
+0

嘗試提琴手做到這一點。 –

回答

2

Yo你可以在C#中使用Selenium。有一個很好的教程:Data Driven Testing Using Selenium (webdriver) in C#

+0

如果目標是使用.NET,那麼Selenium C#綁定是好的,或者您也可以使用Selenium和IronPython。最近我比C#更喜歡IronPython,用於.NET中的自動GUI /瀏覽器測試。 –

+0

Selenium網絡驅動程序工作得很好,謝謝! –

+0

本教程已過時,更好的教程是[可在此處](http://toolsqa.com/selenium-c-sharp/)。 – Niek

0

嘗試JMeter,它也是一個不錯的自動化Web請求,也相當普遍用於網站的性能測試

1

我會建議在代碼中實例化一個WebBrowser控件,並對這個實例做所有的工作,但從不在任何形式上顯示它。我已經做了好幾次,效果很好。唯一的缺陷是,它使用的Internet Explorer的;-)

0

或者只是嘗試System.Windows.Forms.WebBrowser,例如:

this.webBrowser1.Navigate("http://games.powernet.com.ru/login"); 
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete) 
    System.Windows.Forms.Application.DoEvents(); 
HtmlDocument doc = webBrowser1.Document; 
HtmlElement elem1 = doc.GetElementById("login"); 
elem1.Focus(); 
elem1.InnerText = "login"; 
HtmlElement elem2 = doc.GetElementById("pass"); 
elem2.Focus(); 
elem2.InnerText = "pass"; 
+0

你可以模擬一個錨鏈接,其中實際包含JavaScript代碼點擊? (例如:''Click here) –

+0

是的,我可以: 的foreach(的HtmlElement ELEM在doc.GetElementsByTagName( 「A」)) { Console.WriteLine(elem.InnerHtml + 「 - >」 + elem.DomElement); elem.InvokeMember(「Click」); } –