现在需要用程序模拟登陆网页,进行表单操作等行为,本来想用sock写,不过考虑到网页稍变就要重写,太麻烦。网上有人说用程序控制浏览器,然后模拟人为点击等操作。不知道如何去做,请各位提些建议,如果能有些示例代码就更好了,谢谢!

解决方案 »

  1.   

    http://blog.csdn.net/vip__888/article/details/5646260
      

  2.   

    自动化测试用的工具selenium就可以实现了。
    我以前用过一个类似的WatiN做过一个网页游戏的外挂,使用起来很简单,稍微研究一下就可以了。
      

  3.   

    谢谢楼上两位的建议,使用httprequest登陆需要解析抓取的网页,如果稍有变动,维护工作量太大。特别当网页中有脚本,好像就很麻烦了。所以才想用浏览器做,然后模拟用户输入,这样好像会简单点。
    我会一点python,是玩python的朋友给我的建议,他们写测试脚本的时候,都这么干得,所以我想C#是不是也可以。
    再次感谢。
      

  4.   

    谢谢fisher的意见,我那个玩python的朋友也是这个意思,也提到了selenium,从来没接触过,先研究下。我想问下,使用selenium的话,能否让浏览器后台运行呢,我不想让浏览器跳出来。谢谢。
      

  5.   

    你可以配合一个http协议抓包/分析工具进行。你不用关心全部的数据,只要关注某些局部数据和提交请求。使用浏览器点击稳定性不好,占用资源大,影响前台用户输入。
      

  6.   

    谢谢caozhy的答复,实际需求是登陆邮箱,我用httprequest写了一部分,水平确实有限,登陆功能已经非常复杂了,还涉及到语言和随机数的问题,在处理表单动作时,就彻底晕了。
    您说的稳定性和影响用户输入是指?是浏览器版本还是什么?
      

  7.   

    如果邮箱支持邮件转发或者POP协议,最好直接存取,而不是借助模拟登录web mail网页。
      

  8.   

    那你就用webbrowser,自动填充,提交
      

  9.   

    不知道webbrowser能否满足需求,得试试先。
      

  10.   

    谢谢bdmh的提醒,登陆使用webbrowser非常简单,比之前使用httprequest要容易很多。现在碰到两个问题。
    1、在webBrowser的DocumentCompleted事件中,处理页面加载完成后的动作,但是仅登陆一次就多次触发该事件,那么在后续一系列模拟操作中,如何判断当前加载的页面状态,该进行哪步操作呢?
    2、这个项目需要用到邮箱内用户某些表单右键菜单中的功能,不知道webBrowser是否支持该功能。
    谢谢各位的指点。