C# 网络浏览器自动化

标签 c# browser

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

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

最佳答案

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

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

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

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

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

希望对你有帮助

关于C# 网络浏览器自动化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10452077/

相关文章:

c# - .Net 3.5 中的 Configuration.Save() 在部署/ Release模式下不起作用

javascript - HashedModuleIdsPlugin 有什么作用?

python - Python 中的浏览文件或目录对话框

javascript - 如何获取浏览器执行javascript后的HTML代码?

c# - FB.Logout() 在 Facebook UnitySDK 中不起作用

c# - 缺少 AxHost.GetPictureFromIPicture() 方法,正在从 MS Access 数据库中检索图片(附件)

c# - 在 C# 中为数据行分配新值

c# - 无法覆盖 Azure Web App 中的服务器证书验证

browser - 使用Casper.js,是否可以接受浏览器权限提示?

javascript - Internet Explorer 不会读取对象属性