存档

文章标签 ‘perl sina ishare 下载 自动化测试’

批量下载新浪共享资料

2011年1月13日 没有评论

新浪(sina)的共享文件(ishare)中有不少比较好的书籍和资料。经过两天研究,我找到一个进行批量下载的方法。最初的思路是找到每个文件的下载链接进行操作,所有的编码和测试工作都是在Ubuntu 10.04下进行的,脚本语言为Perl ,Web浏览器为Chrome。首先对ishare下载页面进行分析,发现这些链接中部分可以使用wget在命令行模式中下载,而更多的被服务器拒绝访问。随后我通过Chrome Dev模式对页面中的JS进行再次分析,发现下载路径被PHP加密无法直接获取,于是决定放弃这种通过源路径下载的方法。有一句Perl名言, “there’s more than one way to do it”。重新对命题进行分析:找到所需下载的文件页面链接,在上述页面中启动下载任务。第一点很容易通过Perl脚本和w3m浏览器实现,关于第二点,上面已经测试了根据源代码使用wget在命令行模式下载。既然是“启动下载任务”,那么是不是可以考虑鼠标点击直接下载呢? 这种最原始的方法说不定就最实用的方法,至少我不用再去纠缠于JS脚本/Cache/解密路径。于是我在万能的CPAN中找到了强大的X11::GUITest,该模块支持鼠标键盘对图形界面的所有操作。理清问题的解决思路: 取得下载页面列表,使用Chrome依次打开每个页面,在每个页面中捕获下载按钮中心鼠标的二维坐标,将鼠标移至指定位置然后点击开始下载,下载完成后关闭页面。根据这个思路编写脚本(下载),测试通过。需要考虑的几点是浏览器打开网页的速度,需要根据网速,文件的平均大小估计文件下载的时间和系统缓存的处理。基于X11::GUITest功能强大,我认为以后实际生活和工作中可以做在自动化操作。比如测试人员根据测试案例设置流程,剩下的就是检查输出和异常处理了,提高测试效率;甚至可以写一些Web游戏“外挂”(偷菜)或者秒杀购买淘宝上的特价物品。