4

我们希望自动化网站中的某些任务,例如让用户“登录”、执行某些功能、读取他们的帐户历史记录等。

我们已经尝试使用普通的 POST/GET 来模拟这一点,但问题是,例如对于“登录”,网站使用 javascript 代码来执行 AJAX 调用,并且还会生成一些随机令牌。

是否可以从字面上模拟网络浏览器?例如:

  • 访问“www.[test-website].com”
  • 填写这些 DOM 项
    • DOM 项目 'username' 填写 'testuser'
    • DOM 项目 'password' 填写 '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); 
4

4 回答 4

2

例如,您可以在 C# 中使用 Selenium。有一个很好的教程:Data Driven Testing Using Selenium (webdriver) in C#

于 2013-06-20T13:58:38.237 回答
1

我建议在代码中实例化一个 WebBrowser 控件并使用此实例完成所有工作,但不要以任何形式显示它。我已经这样做了几次,效果很好。唯一的缺陷是它使用了 Internet Explorer ;-)

于 2013-06-20T13:59:47.813 回答
0

试试 JMeter,它对于自动化 web 请求也很不错,也非常普遍地用于网站的性能测试

于 2013-06-20T13:57:10.227 回答
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";
于 2013-06-20T13:59:58.927 回答