c# - 在 C#/.Net 中以编程方式模拟浏览器

标签 c# .net browser automation emulation

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

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

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

  • 访问“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); 

最佳答案

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

关于c# - 在 C#/.Net 中以编程方式模拟浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17215485/

相关文章:

javascript - 如何检测 WebBrowser 控件中的 Javascript 执行

c# - 如何动态地向按钮添加不同的命令

C# 手动线程

c# - 使用不带属性的 Newtonsoft.Json 序列化和反序列化自定义类型

c# - OperationContext.Current 中的 WCF MessageHeaders

C# - 将对象的字段分配为对另一个对象字段的引用(如指针)

javascript - 容器始终从底部定位

c# - C# 获取列表中的重复元素

.net - .NET Framework v4.0.30128是最新版本吗?

google-chrome - 如何将用户名和密码添加到chrome存储用户凭据的文件中?