WF4.0实战(十七):实现自动访问网站机器人

简介:

概述篇

    用WF4.0实现自动访问’机器人’,听起来有点不可思议。还是老方式,看效果,在讲述一下如何实现,最后总结,附代码下载。

    这篇文章用这个’机器人’玩转了一回博客园。包括:机器人登录,机器人回帖,机器人推荐文章,机器人定时回帖,机器人定时推荐文章。

    这篇文章中,我为大家准备了4个流程。

   第一个流程,google搜索

     这个流程很简单,启动流程Workflow1之后,Workflow1会打开你的IE浏览器,并且导航到google主页,然后流程自动在搜索框中输入搜索关键字:“朱祁林”,并自动地点击搜索。

     第一个流程流程如下图:

jqrworkflow1

    第一步,自动打开google主页

jiqiren1

    第二步,在搜索框中自动输入“朱祁林”

jiqiren2

    第三步,自动点击google search搜索,搜索结果如下:

jiqiren3

    第一个就是俺的博客园海内百川博客。

第二个流程,博客园登录

    流程如下图:

jiqirenworkflow2jpg

    第一步,自动打开博客园登录页面:http://passport.cnblogs.com/login.aspx

jiqiren4

    第二步,输入用户名、密码、保存密码打勾

jiqiren5

    第三步,点击登录,登录成功,如下图:

jiqiren6

    这样就成功地登录博客园了。

第三个流:博客园留言与推荐

    流程图,在第二个流程下面加上下面这段:

jiqirenworkflow3

    效果1,留言:

jiqiren8

    效果2,推荐:

jiqiren9

最后一个流程:

   在流程3的基础上加个循环,这样就可以不停的回复和推荐了,为了防止网站拒绝频繁回复留言,还可以加了一个Delay活动,定时、定期的回复,比如五分钟回复一次。哈哈,做什么用的大家都知道吧。最后一个流程就不演示了,详见附件代码。

 

实现篇:

 

需要写了三种WF4.0自定义活动:

1、访问网站的VisitPage活动

     [Designer(typeof(VisitPageDesigner))]
public sealed class VisitPage : CodeActivity
{
public InArgument<string> Url
{
get;
set;
}
public InArgument<int> WaitTime
{
get;
set;
}
protected override void Execute(CodeActivityContext context)
{
object missing = System.Reflection.Missing.Value;
Browser.TheInstance.Navigate(Url.Get(context), ref missing, ref missing, ref missing, ref missing);
Browser.TheInstance.Visible = true;
while (Browser.TheInstance.Busy)
Thread.Sleep(WaitTime.Get(context));
}
}

 

有两个属性:访问页面的Url和持续的时间WaitTime

2、向网页中输入数据的InputData活动,这里以InputDataExtension为例。

[Designer(typeof(InputDataExtensionDesigner))]
public sealed class InputDataExtension : CodeActivity
{
private const string INPUT_TYPE_TEXT = "TEXT";
private const string INPUT_TYPE_RADIO = "RADIO";
private const string INPUT_TYPE_CHECK = "CHECKBOX";
public InArgument<string> Type
{
get ;
set ;
}
public InArgument<string> InputID
{
get;
set;
}
public InArgument<string> Value
{
get;
set;
}
protected override void Execute(CodeActivityContext context)
{
IHTMLDocument2 doc = Browser.TheInstance.Document as IHTMLDocument2;
IHTMLElement body = doc.body;
IHTMLElementCollection children = body.all as IHTMLElementCollection;
foreach (IHTMLElement child in children)
{
if (child == null)
continue;
if (child.id != null && child.id == InputID.Get(context))
{
child.innerText = Value.Get(context);
}
}
}
}

3、点击页面按钮的Click活动,这里以ClickExtension活动为例:

    [Designer(typeof(ClickDesigner))]
public sealed class ClickExtension : CodeActivity
{
public InArgument<string> ClickName
{
get ;
set ;
}
protected override void Execute(CodeActivityContext context)
{
IHTMLDocument2 doc = Browser.TheInstance.Document as IHTMLDocument2;
IHTMLElement body = doc.body;
IHTMLElementCollection children = body.all as IHTMLElementCollection;
foreach (IHTMLElement child in children)
{
if (child == null)
continue;
if (child.id != null && child.id == ClickName.Get(context))
{
child.click();
}
else if (child.className != null && child.className == "diggit")
{
child.click();
}
}
}
}

  总结一下上网:你无非是动动鼠标,动动键盘。现在InputData和Click都帮你定制好了。你只需动动你的眼睛去看了,用大脑去思考就行了。:)

总结:

    这篇文章使用WF4.0去定制一些用户的动作,你可能说这个没什么大的用处吧,最多是玩新了点花样,对实际开发没有多大用处。其实在这篇文章之前,我已经写了一篇:WF4.0实战(五):实现一个直观易扩展的自动测试框架,这篇文章是对一个简单的windowform制定了一个测试流程。本篇文章,你完全可以利用这篇文章,定制一些测试流程,去测试你的网站。

     WF4.0是不是有有趣呢。那就开始学习吧。有趣,别忘了推荐哈。:)





本文转自麒麟博客园博客,原文链接:http://www.cnblogs.com/zhuqil/archive/2010/05/21/wf4-Visit-Web-Site.html,如需转载请自行联系原作者

相关文章
|
4月前
|
算法 机器人 Python
动态规划法在扫地机器人中的实战应用(基于动作值函数的策略迭代 python 附源码)
动态规划法在扫地机器人中的实战应用(基于动作值函数的策略迭代 python 附源码)
37 0
|
3月前
|
传感器 机器人 C++
ROS 2机器人编程实战:基于现代C++和Python 3实现简单机器人项目
ROS 2机器人编程实战:基于现代C++和Python 3实现简单机器人项目
186 0
|
4月前
|
机器学习/深度学习 自然语言处理 机器人
【Tensorflow+自然语言处理+RNN】实现中文译英文的智能聊天机器人实战(附源码和数据集 超详细)
【Tensorflow+自然语言处理+RNN】实现中文译英文的智能聊天机器人实战(附源码和数据集 超详细)
44 0
|
4月前
|
自然语言处理 机器人 数据库
【Python自然语言处理+tkinter图形化界面】实现智能医疗客服问答机器人实战(附源码、数据集、演示 超详细)
【Python自然语言处理+tkinter图形化界面】实现智能医疗客服问答机器人实战(附源码、数据集、演示 超详细)
68 2
|
4月前
|
机器学习/深度学习 自然语言处理 机器人
【Tensorflow+自然语言处理+LSTM】搭建智能聊天客服机器人实战(附源码、数据集和演示 超详细)
【Tensorflow+自然语言处理+LSTM】搭建智能聊天客服机器人实战(附源码、数据集和演示 超详细)
174 0
|
4月前
|
机器学习/深度学习 存储 算法
强化深度学习中使用Dyna-Q算法和优先遍历算法在机器人实战中的对比分析(超详细 附源码)
强化深度学习中使用Dyna-Q算法和优先遍历算法在机器人实战中的对比分析(超详细 附源码)
32 0
|
4月前
|
机器学习/深度学习 算法 数据可视化
强化深度学习中使用Dyna-Q算法确定机器人问题中不同规划的学习和策略实战(超详细 附源码)
强化深度学习中使用Dyna-Q算法确定机器人问题中不同规划的学习和策略实战(超详细 附源码)
37 0
|
4月前
|
机器学习/深度学习 算法 机器人
深度强化学习中利用Q-Learngin和期望Sarsa算法确定机器人最优策略实战(超详细 附源码)
深度强化学习中利用Q-Learngin和期望Sarsa算法确定机器人最优策略实战(超详细 附源码)
40 0
|
11月前
|
运维 Cloud Native 机器人
《2023云原生实战案例集》——01 汽车/制造——节卡机器人 云拨测测助力全面优化海外网站性能
《2023云原生实战案例集》——01 汽车/制造——节卡机器人 云拨测测助力全面优化海外网站性能
《2023云原生实战案例集》——01 汽车/制造——节卡机器人  云拨测测助力全面优化海外网站性能
|
机器学习/深度学习 数据采集 人工智能
基于 Transformer 的 NLP 智能对话机器人实战课程(大纲1-10章)
基于 Transformer 的 NLP 智能对话机器人实战课程(大纲1-10章)
312 0

热门文章

最新文章