首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# Webbrowser浏览器自动化

C# Webbrowser浏览器自动化
EN

Stack Overflow用户
提问于 2012-05-04 23:48:33
回答 3查看 16K关注 0票数 6

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

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

EN

回答 3

Stack Overflow用户

发布于 2012-05-05 04:25:59

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

使用webbrowser控件来实现:这在技术上是可行的,方法是将javascript作为demonstrated here注入到目标页面中,或者创建一个JavaScript对象并通过webbrowser.objectforscripting属性将其用作桥梁。这是非常脆弱的--像网站改变一个元素的Id这样简单的事情可能会破坏它。您还需要确保您的代码不会干扰表单的功能(函数名称冲突等)。

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

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

顺便说一句,如果你有Visual Studio旗舰版/测试版(以及其他一些,不确定是哪个),它包括一套测试工具,其中包括一个出色的引擎,可以自动对网站进行负载测试。这对于跟踪表单到底做了什么也是极好的,因为您可以看到模拟的每个步骤。

希望这能有所帮助

票数 6
EN

Stack Overflow用户

发布于 2012-05-05 00:01:52

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

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

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

票数 4
EN

Stack Overflow用户

发布于 2012-05-05 00:19:56

您可以尝试一下Selenium :对于这些类型的任务,http://seleniumhq.org/ UI自动化是一种更直观的方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10452077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档