WebDrive的认识

WebDriver是一个测试框架,使用到浏览器的内核.实际步骤是:
1.打开浏览器(需要一定的时间);
2.加载url并完成动态解析;
3.通过page.asXml()就可以得到完成的html页面

,其实HtmlUnitDriver模拟无界面浏览器,java中有执行JS的引擎rhino,HtmlUnitDriver使用的就是rhino来解析JS的,由于不会去启动有界面的浏览器,所以HTMLUnitDriver的速度比前面的三者快.但是解析JS需要时间,不同的内核对JS的支持也是不同的.

所以,对于只是嵌入少数的JS代码的页面来说,通过page.asxml()来获取完整的页面时没什么问题的,但是对于嵌入较多的JS代码的页面.解析JS是需要很多时间的(对于JVM),而且大多时候不包含有动态生成的内容.

为了解决获取动态代码的问题:我尝试使用Thread.sleep(2000)这样的不确定性代码,确实在一定程度上解决了这样的问题,但是时间的阀值不确定,时间代价较大.

因此,可以说使用WebDriver来辅助爬去动态生成的网页所得到的结果是很不稳定的,
其实WebDirver中HtmlUnitDriver在内部使用的就是httpUnit,所以使用HttpUnit也会遇到同样的问题.

WebDriver是为测试而设计的框架,虽然按照其原理理论上可以用来辅助爬虫获取包含有动态内容的html页面,但是在实际的应用中是不取的,不确定性太大了,稳定性太差,速度太慢,我们还是让框架各尽其值吧,不要折煞了他们的优点。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转自Selenium WebDriver注意:本章内容官方团队正在完善中。 介绍 WebDriver### Sel...
    抓兔子的猫阅读 7,878评论 2 22
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,033评论 1 92
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,572评论 1 32
  • Selenium 官网Selenium WebDriver官网webdriver实用指南python版本 WebD...
    顾顾314阅读 47,257评论 0 34
  • 我们, 可能, 会远 。
    木子景人阅读 153评论 0 0

友情链接更多精彩内容