随笔分类 - 浏览器自动化
摘要:原来的代码大致如下: private void foo(string url) { using (WebClient client = new WebClient()) { client.DownloadProgressChanged += (obj, ev) => { client.CancelA
阅读全文
摘要:浏览器自动化程序,感觉最难的就是稳定性。要实现无人值守自动执行,特别是在网络不太好的情况下连续不停顿正常运行8小时或更长时间,是不太容易的。因为很多异常情况难以预料。做好以下几点有帮助: 1)如果是在visual studio下调试,应该把Debug - Exceptions - Managed D
阅读全文
摘要:WebBrowser控件最大的优点是可以轻松嵌入win form程序中,但是微软好像对这个控件没什么兴趣,这么多年了还没有改进,结果造成一堆问题。 1. 不支持https 2. 缺省模拟ie 7,如果要模拟其他ie版本就得修改注册表,但是修改注册表会带来其他的问题。具体在另外一个帖子里讨论过了:ht
阅读全文
摘要:发现浏览器自动化有一个重要方面没有提及,即所谓的无页面浏览器,不过最近没有需求,不想尝试,先记上一笔,以后有需求时,可以有个思路。 大约一两个月前(现在比较懒散,时间不知不觉过去,连今天是几号有时候都搞糊涂),碰到一个问题,本来程序中用WebBrowser控件访问一个页面,现在那个页面用Angula
阅读全文
摘要:1. 下载图片 这个链接说得最好,差不多所有可能的方法都列举了,除了没有提到用URLDownloadToFile,不过这和用WebClient差不多。 https://stackoverflow.com/questions/18424624/using-selenium-to-save-images
阅读全文
摘要:这里谈两点 1.支持代理服务器切换 一种方法是修改注册表,不是太好的做法,而且,只能改全局设置,不能改局部(比如只让当前的webBrowser控件使用代理,而其他应用不用代理) 另外一个较好的方法,示例代码可以从这里下载:https://code.msdn.microsoft.com/windows
阅读全文
摘要:从winform访问webBrowser,大致就是利用webBrowser提供的解析dom的方法以及用InvokeScript方法执行javascript。这个相对比较简单。 从webBrowser访问winform,归纳出来大致4种办法: 1.利用webBrowser的Navigating事件 网
阅读全文
摘要:1. DocumentCompleted的多次执行问题 有的网页,会多次触发DocumentCompleted事件,由于它是异步的,不会阻塞,所以如果不恰当处理,会造成某些代码被错误地多次执行,造成意想不到的结果。 我一般的做法,是定义一个全局变量(winform里form的成员变量),如下面代码所
阅读全文
摘要:1. 一般需要执行这一句:webBrowser1.ScriptErrorsSuppressed = true; 主要目的是禁止跳出javascript错误的对话框,否则会导致程序无法正确地跑下去。缺点显然是某些真正的javascript错误被掩盖了。但是实践中觉得多数情况下,这一句是有必要的。 2.
阅读全文
摘要:上个帖子简要讨论了浏览器自动化的几种方法。现在讨论webBrowser控件使用中的一些问题。基本的操作就不详细说了,随便网上找个帖子或找本书都有介绍的。这里只写点网上似乎少有人总结过的内容,以及自己的一些实践体会。 1.ajax 首先,DocumentCompleted事件对于ajax无能为力,因为
阅读全文
摘要:这应该也是一个系列,边整理,边记录。 浏览器自动化(browser automation) 我的理解就是用代码模拟浏览器的行为。 这里说的基本上是基于C#的实现。 大致可能有这几种方法(这里只是一个概述,详细以后讨论): 1.用httprequest,或者用webclient,后者相当于包装了htt
阅读全文