本来是想尝试使用curl模拟post向新浪发送微博,但是试了几次都没有成功。看到一些文章于是想到可以使用powershell模拟IE的动作来做。发现这样做更为简便
1 可以先用IE来自动读取cookie,而不用在代码中直接设置cookie
2 powershell是模拟正常用户的行为,服务器端几乎无法对这种行为进行禁止
3 代码简单,容易进行修改
下面是powershell的代码(运行前先手动使用IE登录微博,并让IE记录用户名和密码,记录cookie)
function NavigateIE( $url ) { $ie = new - object - com " InternetExplorer.Application " ; $ie .navigate( $url ); # ie.visible=ie.visible=true; [System.Threading.Thread] :: Sleep( 2000 ); return $ie ; } function FindTag( $params ) { $ie = $params [ 0 ]; $tagname = $params [ 1 ]; $contain = $params [ 2 ]; $doc = $ie .document; $tags = @ ( $doc .getElementsByTagName( $tagname )); foreach ( $tag in $tags ) { if ( $tag .outerHTML.contains( $contain )) { $sel = $tag ; break ; } } return $sel ; } $ie = NavigateIE( " http://weibo.com/12321 " ); $talk = FindTag( $ie , " textarea " , 'id = publish_editor'); $but = FindTag( $ie , " span " , 'class = bgColorB'); $talk .value = " test " ; $but .click();
主要的函数是:NavigateIE和FindTag,一个函数阅读为打开IE,一个函数阅读为找到标签
代码的流程就是: 打开IE -- 找到输入框 -- 填写信息 -- 找到提交按钮 -- 单击提交按钮
很简洁明了
PS:这个代码不是针对新浪微博的行为。只是闲来无事的实验。
个人认为这种方法应该可以使用在为网站的测试人员做模拟测试,因为这个代码操作就是和人的行为操作是完全一致的。能很好的模拟人的行为,也有更强的说服力。但是现在还没遇到实际的情况使用。
本文转自轩脉刃博客园博客,原文链接:http://www.cnblogs.com/yjf512/archive/2011/06/08/2075531.html,如需转载请自行联系原作者