我正在编写一个工具来从多个网站获取信息,所有网站都需要我登录。我的正常方法是遵循 Fiddler 或类似工具中的请求和响应,并遵循该直接路径。
但是,感觉有点严格。网站上的最小更改可能会破坏我的代码。所以我正在寻找类似无 UI 浏览器的东西,我可以通过以下方式使用它:
Browser.Load("https://sourceforge.net/account/login.php");
Browser.Document.ElementById("form_loginname").Value = "login";
Browser.Document.ElementById("form_pw").Value = "password";
(Browser.Document.ElementById("login") As WebButton).Click(); // the login button is named "login".
此代码完成后,我希望看到在常规浏览器中看到的页面。
像我描述的那样的东西存在吗?
编辑 - C# 支持是首选
最佳答案
这很像 Web 应用程序的自动化用户测试,主要区别在于您不拥有测试的应用程序。
Selenium是一个流行的自动驾驶浏览器的库。如果您想以 headless 方式运行使用 Selenium 的程序,您可以使用 headless X 服务器,例如 Xvfb。关于不使用Xvfb,有一个older question关于替代方案。
由于 Selenium 可以通过多种编程语言驱动多种浏览器,因此我鼓励您在 StackOverflow 上探索 Selenium 标签。
您特别感兴趣的是 SimpleBrowser.WebDriver 之类的内容:用于 .Net 内存中轻量级浏览器的 Selenium 绑定(bind)。实际上,SimpleBrowser直接可能会满足您的需求,而无需增加 Selenium 的复杂性。
关于browser - 一个无需 GUI 的浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13299615/