6

背景:我正在创建一个 Windows 窗体应用程序,它可以在 Intranet Web 应用程序上自动输入订单。我们有大量的订单输入需要完成,这将花费我们很多钱,所以我自愿完成这项任务。

问题:我正在使用 webbrowser 类来导航 Web 应用程序。我已经走了很远,但到达了路障。应用程序中有一个部分会打开一个 Web 对话页面。如何与 Web 对话框交互。我的 webbrowser 类实例仍在父页面中。我希望有人能指出我正确的方向。

4

3 回答 3

6

你有很多选择。要扩展其他人的答案并添加新想法...

使用 webbrowser 控件执行此操作:从技术上讲,这可以通过将 javascript 注入目标页面(如此处所示)或创建 JavaScript 对象并通过webbrowser.objectforscripting属性将其用作桥接器来实现。这是非常脆弱的 - 像网站更改元素 ID 这样简单的事情可能会破坏它。您还需要确保您的代码不会干扰表单的功能(冲突函数名称等......)

使用回发:监控 Web 浏览器和服务器之间的通信(我个人更喜欢 Firfox/Firebug,但 ie/Fiddler 或 Chrome/F12 也都不错)。只要你能准确地复制浏览器的动作,服务器就无法知道其中的区别。这里的问题是浏览器很复杂,表单越安全,服务器的要求就越高。这意味着您可能必须伪造登录、获取 cookie、在后续请求中将它们发回、处理 Viewstate 数据和 xss 预防变量。这是可能的,它比第一个选项更强大,但开始工作可能会很痛苦。如果它不是一种高度安全的形式,那么这是您最好的选择。更多信息在这里

通过浏览器自动化来做到这一点: Selenium可能是这里的最佳选择(正如其他人所提到的),但存在与 webbrowser 控件类似的缺陷,因为它对表单本身的更改很敏感(但不像 webbrowser 控件那样 mcuh) .

顺便说一句,如果您拥有 Visual Studio Ultimate/Test 版本(以及其他一些版本,不确定是哪个版本),它包括一套测试工具,其中包括一个出色的引擎来自动对网站进行负载测试。正如您可以看到模拟的每一步一样,这对于跟踪表单的确切作用也是极好的。

希望这可以帮助

于 2012-05-04T20:25:59.427 回答
4

根据您需要的复杂程度,您有两种选择:

  1. 使用像Fiddler这样的 HTTP 调试器来找出您需要发送到每个页面的 POST 数据,并通过HttpWebRequest模仿它。
  2. 使用Browser Automation Tool类似Selenium并完成工作。

注意:您的行为可能会被网站视为垃圾邮件,因此请准备好进行 IP 屏蔽、验证码...

于 2012-05-04T16:01:51.887 回答
0

你可以试试 Selenium:http ://seleniumhq.org/ UI 自动化是处理这些类型任务的一种更直观的方法。

于 2012-05-04T16:19:56.353 回答