程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> WF4.0實戰(十七):實現自動訪問網站機器人

WF4.0實戰(十七):實現自動訪問網站機器人

編輯:關於.NET

用WF4.0實現自動訪問’機器人’,聽起來有點不可思議。還是老方式,看效果,在講述一下如何實現,最後總結,附代碼下載。

這篇文章用這個’機器人’玩轉了一回博客園。包括:機器人登錄,機器人回帖,機器人推薦文章,機器人定時回帖,機器人定時推薦 文章。

這篇文章中,我為大家准備了4個流程。

第一個流程,google搜索

這個流程很簡單,啟動流程Workflow1之後,Workflow1會打開你的IE浏覽器,並且導航到google主頁,然後流程自動在搜索框中輸入搜 索關鍵字:“朱祁林”,並自動地點擊搜索。

第一個流程流程如下圖:

第一步,自動打開google主頁

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

第三步,自動點擊google search搜索,搜索結果如下:

第一個就是俺的博客園海內百川博客。

第二個流程,博客園登錄

流程如下圖:

第一步,自動打開博客園登錄頁面:http://passport.cnblogs.com/login.aspx

第二步,輸入用戶名、密碼、保存密碼打勾

第三步,點擊登錄,登錄成功,如下圖:

這樣就成功地登錄博客園了。

第三個流:博客園留言與推薦

流程圖,在第二個流程下面加上下面這段:

效果1,留言:

效果2,推薦:

最後一個流程:

在流程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是不是有有趣呢。那就開始學習吧。有趣,別忘了推薦哈。:)

本文配套源碼

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved