背景:我正在创建一个Windows窗体应用程序,该应用程序可以自动在Intranet Web应用程序上输入订单。我们需要完成大量的订单输入工作,这将花费我们很多钱,因此我自愿将任务自动化。
问题:我正在使用webbrowser类浏览Web应用程序。我走得很远,但遇到了路障。该应用程序中有一个部分可以打开网络对话框页面。如何与网络对话框互动。我的webbrowser类实例仍在父页面中。我希望有人可以指出正确的方向。
您有很多选择。为了扩展他人的答案并添加新的想法...
使用webbrowser控件来做到这一点:从技术上讲,这可以通过将javascript注入目标页面来实现,如此处所示,或者创建一个JavaScript对象,然后通过webbrowser.objectforscripting属性将其用作桥梁。这非常脆弱-像更改元素ID的网站这样的简单操作可能会破坏它。您还需要确保您的代码不会干扰表单的功能(冲突的函数名称等)。
使用回发来实现:监视Web浏览器和服务器之间的通信(我个人更喜欢Firfox / Firebug,但是/ Fiddler或Chrome / F12都很好)。只要您可以精确复制浏览器的操作,服务器就不会知道它们之间的区别。这里的问题是浏览器很复杂,表单越安全,服务器的要求就越高。这意味着您可能必须伪造登录名,获取cookie,然后在后续请求中将其发送回去,处理Viewstate数据和xss预防变量。这是有可能的,并且比第一种选择要健壮得多,但是开始工作可能会很痛苦。如果不是高度安全的表格,这是您最好的选择。更多信息在这里
通过浏览器自动化来做到这一点: Selenium可能是这里最好的选择(正如其他人所提到的那样),但它也遭受与webbrowser控件类似的缺陷,因为它对表单本身的更改敏感(但不像webbrowser控件那样易用) 。
顺便说一句,如果您拥有Visual Studio Ultimate / Test版本(以及其他一些版本(不确定哪个版本)),则它包括一套测试工具,其中包括一个出色的引擎,可以自动执行网站负载测试。正如您可以看到仿真的每个步骤一样,这对于跟踪表单的确切功能也非常有用。
希望这可以帮助
根据您需要的复杂程度,您有两种选择:
Browser Automation Tool
类似Selenium 的工具来完成这项工作。注意:您的行为可能会被网站视为垃圾邮件,因此请准备好 IP 阻止、验证码...