Windows関連

C#からWinium.Cruciatusを使ってみた。

前回の記事では、Winium WebDriverを使ってメモ帳を操作してみました。

GitHubを見てみると、WinFroms、WPFベースのアプリ操作自動化を目的とした「Winium.Cruciatus」というフレームワークもあるようなので、こちらも試してみることにします。
(Cruciatus = ラテン語で拷問?ずいぶんと物騒な名前です。)

下準備

Winium WebDriverと同じく、必要なパッケージをNuGetからインストールします。

nuget install "Winium.Cruciatus"

Winium.Cruciatusでメモ帳を操作するコード

準備ができたら、さっそくコードを書いていきます。

/*
 * Winium.Cruciatusでメモ帳を操作するサンプル
 * @kinuasa
 * 
 * [要参照]
 * UIAutomationClient,
 * UIAutomationTypes,
 * Winium.Cruciatus(Winium.Cruciatus.dll),
 * WindowsInput(WindowsInput.dll)
 * NLog(NLog.dll)
 */
using System;
using System.Windows.Automation;
using Winium.Cruciatus.Core;
using Winium.Cruciatus.Extensions;

namespace Sample2
{
  class Program
  {
    public static void Main(string[] args)
    {
      var calc = new Winium.Cruciatus.Application(@"C:\Windows\System32\calc.exe");
      calc.Start();
      var winFinder = By.Name("電卓").AndType(ControlType.Window);
      var win = Winium.Cruciatus.CruciatusFactory.Root.FindElement(winFinder);
      
      //電卓の'5','6','7'ボタンクリック
      //AutomationId指定
      win.FindElementByUid("num5Button").Click();
      win.FindElementByUid("num6Button").Click();
      win.FindElementByUid("num7Button").Click();
      
      Console.Write("Press any key to continue . . . ");
      Console.ReadKey(true);
    }
  }
}

Winium_Cruciatus_01

上図の通り、意図した通りに動作しているようです。
GitHubにも書いてありますが、Winium.CruciatusはUI Automationのラッパーのようで、AutomationIdでエレメントを指定することもできます。

Inspect」等のツールを使えば、AutomationIdを調べることができるので、Winium.Cruciatusを使用する際には、事前にダウンロードしておくことをお薦めします。

Winium.CruciatusでWPFサンプルアプリを操作するコード

GitHubにはテスト用のサンプルアプリも置いてあります。

せっかくなので、このWPFアプリの操作も試してみたいと思います。
(サンプルアプリは、Visual Studioが無くてもMSBuildを使えばビルドすることができます。)

/*
 * Winium.CruciatusでWPFサンプルアプリを操作するコード
 * @kinuasa
 * 
 * [要参照]
 * UIAutomationClient,
 * UIAutomationTypes,
 * Winium.Cruciatus(Winium.Cruciatus.dll),
 * WindowsInput(WindowsInput.dll)
 * NLog(NLog.dll)
 */
using System;
using System.Windows.Automation;
using Winium.Cruciatus;
using Winium.Cruciatus.Core;

namespace Sample4
{
  class Program
  {
    public static void Main(string[] args)
    {
      var testApp = new Winium.Cruciatus.Application(@"C:\Software\WpfTestApplication\WpfTestApplication.exe");
      testApp.Start();
      
      //RibbonTabItem2クリック
      var tab2 = CruciatusFactory.Root.FindElementByUid("RibbonTabItem2");
      tab2.Click();
      //RibbonCheckBoxクリック
      tab2.FindElementByUid("RibbonCheckBox").Click();
      //TabItem4クリック
      var tab4 = CruciatusFactory.Root.FindElementByUid("TabItem4");
      tab4.Click();
      //thirteenセルにフォーカス
      foreach (var cell in tab4.FindElements(By.AutomationProperty(AutomationElementIdentifiers.ClassNameProperty, "DataGridCell"))) {
        if (cell.Properties.Name == "thirteen") {
          cell.SetFocus();
        }
      }
      
      Console.Write("Press any key to continue . . . ");
      Console.ReadKey(true);
    }
  }
}

Winium_Cruciatus_02

リボンのタブやチェックボックスの操作等、簡単なコードで処理することができました。
素のUI Automationだとコードが長くなりがちなので、コードをスッキリさせたい場合は、Winium.Cruciatusを使うのは割とアリだと思います。
(少なくともWinium WebDriverよりは使いやすいです。)

C#からWinium WebDriverを使ってみた。前のページ

オトカドール 3rdドリームをプレイしてきたよ。次のページ

関連記事

  1. Windows関連

    [Windows 8]従来のスタートメニューを使用する。

    2012/3/2 追記:下記情報はWindows Develope…

  2. Windows 10

    Windows Insider Meetup in Japan 2019 東京に参加しました。

    Windows Insider向けのミートアップイベント「Window…

  3. Windows 10

    YouTubeの「歌ってみた」動画を非表示にするMicrosoft Edge拡張機能

    私はよくYouTubeで動画を見るのですが、公式PVを見たいだけなのに…

  4. Windows 10

    AppUserModelId(AUMID)を列挙するVBScript

    「「ファイル名を指定して実行」からMicrosoft Edgeを起動す…

  5. Windows関連

    キーを指定してレジストリエディターを起動するバッチファイル

    OSの設定中、レジストリの特定のキーを開いた状態でエディターを起動した…

  6. Windows 10

    続・Microsoft Edgeを操作するVBAマクロ(DOM編)

    以前VBAからMicrosoft Edgeを操作するマクロについて記事…

コメント

  • コメント (1)

  • トラックバックは利用できません。

    • Vu
    • 2017年 10月 27日 10:33pm

    Hi,

    I want to find element in list of combobox? Can you help me!

Time limit is exhausted. Please reload CAPTCHA.

Translate

最近の記事

アーカイブ

PAGE TOP