我们希望自动执行网站中的某些任务,例如让用户“登录”,执行某些功能,阅读他们的帐户历史记录等。
我们尝试使用普通的POST / GET来模拟它,但问题是例如对于'login',网站使用javascript代码执行AJAX调用,并且还生成一些随机令牌。
是否可以从字面上模拟网络浏览器?例如:
以上内容可以翻译成以下示例代码:
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)
你可以在C#中使用例如Selenium。有一个很好的教程:Data Driven Testing Using Selenium (webdriver) in C#。
答案 1 :(得分:1)
我建议在代码中实例化一个WebBrowser控件,并使用此实例完成所有工作但从不在任何表单上显示它。我已经好几次这样做了,效果还不错。唯一的缺陷是它使用了Internet Explorer; - )
答案 2 :(得分:0)
尝试使用JMeter,它对于自动化Web请求也很不错,也非常普遍用于网站的性能测试
答案 3 :(得分: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";