WinAppDriverを使ってみる2

JavaSeleniumも英語もわからないけどとにかくwindows application driver使いたいシリーズ

前回、cmd.exeのセッション作れないー!ってなってたんですが、何かのissueからたどり着いた↓の記事のようにしたら出来ました。
WinAppDriver/README.md at v1.0-RC2 · Microsoft/WinAppDriver · GitHub

  1. デスクトップのセッションを作る
  2. デスクトップのセッションから起動したいアプリを起動する
  3. 起動したアプリのNativeWindowHandleを取得して16進数にする(←?)
  4. setCapability("appTopLevelWindow", /* 3の値 */);してセッションを作る
   @BeforeClass
    public static void setup() throws Exception {
        // デスクトップセッションを作る
        DesiredCapabilities appCapabilities = new DesiredCapabilities();
        appCapabilities.setCapability("app","Root");
        DesktopSession = new WindowsDriver<WebElement>(new URL("http://127.0.0.1:4723"), appCapabilities);
        DesktopSession.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

        // コマンドプロンプトを起動する
        DesktopSession.findElementByAccessibilityId("{********}\\cmd.exe").click();

        // 起動しているコマンドプロンプトのハンドルを取得して...
        WebElement cmdWindow = DesktopSession.findElementByClassName("ConsoleWindowClass");
        String cmdTopLevelWindowHandle = cmdWindow.getAttribute("NativeWindowHandle");
        cmdTopLevelWindowHandle = "0x" + Integer.toHexString(Integer.parseInt(cmdTopLevelWindowHandle));

        // 起動しているコマンドプロンプトのセッションを作る
        DesiredCapabilities cmdAppCapabilities = new DesiredCapabilities();
        cmdAppCapabilities.setCapability("appTopLevelWindow", cmdTopLevelWindowHandle);
        CmdSession = new WindowsDriver<WindowsElement>(new URL("http://127.0.0.1:4723"), cmdAppCapabilities);
        CmdSession.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

    }

タスクバーにコマンドプロンプトをピン留めしてそこをクリックして起動してます。

サンプルがJavaじゃない(?)みたいでそのままだと動かなかったのでいろいろ書き換えた結果コレで出来ました。
0x1234みたいなやつ全然意味わからないけどうまくいくからそのままにしてる…。
@AfterClassでセッションを閉じる前にコマンドプロンプトexit+Returnを送って画面閉じてます。