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]拡張子を表示する。

    ※ 下記はWindows Developer Preview(英語版・…

  2. Windows 10

    PowerShellでMicrosoft Edgeを操作する

    前回の記事でWebDriverを使ってMicrosoft Edgeを操…

  3. Windows関連

    [Windows 8]クイックアクセスツールバーの情報はどこ?

    ※ 下記はWindows Developer Preview(英語版・…

  4. Windows関連

    どのブラウザーが最強なのかを調べてみたよ。

    Internet Explorer、Chrome、Firefox…数あ…

  5. Windows関連

    [Windows 8]メトロスタイルのアプリを並べて使う。

    ※ 下記はWindows Developer Preview(英語版・…

  6. Windows 10

    Microsoft EdgeのURL制限は2083文字なのか調べてみた。

    Internet Explorerで使用できるURLの長さに制限がある…

コメント

  • コメント (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