C# Web 浏览器自动化

本文关键字:自动化 浏览器 Web | 更新日期: 2023-09-27 18:33:17

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

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

C# Web 浏览器自动化

你有很多

选择。扩展其他人的答案并添加新的想法......

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

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

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

顺便说一下,如果你有Visual Studio Ultimate/Test版本(以及其他一些版本,不确定是哪个(,它包括一套测试工具,包括一个优秀的引擎来自动对网站进行负载测试。这对于跟踪表单的确切作用也非常有用,因为您可以看到仿真的每一步。

希望这有帮助

根据

所需的复杂程度,您有两种选择:

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

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

你可以

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