首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

WF4.0 實戰(十七):打造自動化網站操作機器人

     編輯:關於.NET

使用 WF4 設計四個流程自動化操作瀏覽器:Google 搜尋、博客園登入、留言/推薦、定時循環回覆。核心為三個自訂 CodeActivity 操作 IE COM 物件。

四大流程展示

  1. Google 搜尋「朱祁林」→ 自動開啟 IE、輸入關鍵字、點擊搜尋
  2. 博客園登入 → 自動填寫帳號密碼、勾選記住、點擊登入
  3. 留言與推薦 → 登入後自動發文、點擊推薦
  4. 循環定時 → 加入 Delay 活動每 5 分鐘重複
流程一 Google 搜尋 自動開啟 Google 自動輸入關鍵字 搜尋結果 流程二 博客園登入 開啟登入頁 填寫帳號密碼 登入成功 流程三 留言推薦 自動留言效果 自動推薦效果

三大核心自訂活動

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));
    }
}

2. InputDataExtension - 輸入表單資料

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

3. ClickExtension - 點擊按鈕/連結

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

此架構可擴充為自動化測試框架,將使用者操作封裝為可視化流程活動。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved