Windows 10

PowerShellでMicrosoft Edgeを操作する

前回の記事でWebDriverを使ってMicrosoft Edgeを操作するVBAマクロを紹介しましたが、効率は良くありません。

Bringing automated testing to Microsoft Edge through WebDriver」でも書かれている通り、せっかくSeleniumがEdgeに対応しているのだから、こちらを使った方が良いに決まっています。

ただ、上記Microsoft Edge Dev Blogの記事に書かれているサンプルコードを見て思うのが、

“いちいち C# でコードを書いてビルドしないといけないのか?”

ということです。
Edgeに渡すパラメーターをちょこっと変えるだけなのに、コード直してビルドし直して…というのは私的にはあまり嬉しくありません。
(そもそもVisual Studio入っていない場合はどうするのか?csc.exeで毎度コンパイルせにゃならんのか!?と。)

個人的には、やはりVBScriptのようにメモ帳あたりでサクっとコードを書きつつEdgeの操作を自動化したいわけです。

何か良い方法は無いものか?
― もちろんあります。そう、PowerShellです。

・・・というわけで、今回はSeleniumを使ってMicrosoft Edgeを操作するPowerShellのコードを紹介します。

事前準備

  1. Download Microsoft WebDriver from Official Microsoft Download Center」からMicrosoftWebDriver.msiファイルをダウンロードし、Microsoft WebDriverをインストールします(詳細は前回の記事参照)。
  2. Selenium Client & WebDriver Language Bindings」からC#用のファイル(2015/8/10 時点では selenium-dotnet-2.47.0.zip ファイル)をダウンロードし、適当なフォルダに解凍します(今回は C:\System\selenium)。
  3. AutomateMicrosoftEdge_PowerShell_01

Microsoft Edgeを操作するPowerShellコード

WebDriverとSeleniumの準備ができたらいよいよPowerShellの出番です。

Add-Type -Path "C:\System\selenium\net40\WebDriver.dll";

$driver = New-Object OpenQA.Selenium.Edge.EdgeDriver("C:\Program Files (x86)\Microsoft Web Driver");
$driver.Url = "http://www.yahoo.co.jp/";
$driver.ExecuteScript('document.getElementById("srchtxt").value="\"初心者備忘録\""');
$driver.FindElementsById("srchbtn").Click();
do
{
  Start-Sleep -s 1
  $title = $driver.Title;
} until($title.Contains("初心者備忘録"))
$ws = New-Object -ComObject WScript.Shell;
$ws.Popup($title);
$driver.Close();
$driver.Dispose();

Add-TypeでWebDriver.dllを読み込んで、OpenQA.Selenium.Edge.EdgeDriver コンストラクターで「MicrosoftWebDriver.exe」ファイルの場所を指定しています(付属リファレンスだと“EdgeDriver.exe”の場所を指定しろ、となっていますが、これは誤りですね)。

あとはページ移動したりボタンをクリックしたり、Edgeを操作していくわけですが、IWebElement.SendKeys メソッドだと日本語を送れなかったため、ExecuteScriptを使ってスクリプトでテキストを設定しています。

そして表示待ち処理。
本来はWebDriverWaitのUntilメソッドを使うべきだと思いますが、PowerShellからだと面倒くさそうだったので原始的な処理をすることにしました。

何はともあれ、上記コードを実行すると下図のように、Microsoft Edge起動 → Yahoo! JAPANにページ移動 → “初心者備忘録”をキーワードに検索 → 検索結果のタイトルをメッセージボックスで表示、という動作が自動的に行われます。

AutomateMicrosoftEdge_PowerShell_02

Edgeの操作の詳細に関しては、Selenium付属のリファレンス「WebDriver.chm」にいろいろ載っているので、そちらをご参照いただければと思います。

― 以上のように、非常に短く簡単なコードでEdgeの制御を行うことができました。
PowerShellであれば、OSに標準搭載されている上に手軽に書いて手軽に実行することができます。
Webシステムのテスト等、Edgeを外部から操作する必要がある場合には、 Selenium + WebDriver + PowerShell が個人的にはオススメです。

もちろん、WebDriver ServerにJSONを渡せば良いだけなので、言語に拘らず“Microsoft Edgeを操作するVBAマクロ”のようにいばらの道を歩いていくのもアリだと思いますが、やっぱり、楽できるところは楽をした方が良いですね。

関連記事

Microsoft Edgeを操作するVBAマクロ(WebDriver編)前のページ

Microsoft Edgeを操作するVBAマクロ(DOM編)次のページ

関連記事

  1. Windows 10

    Microsoft Edgeの拡張機能でHello Worldしてみた。

    「【Windows 10ユーザーズ・ワークベンチ】Edgeの拡張機能サ…

  2. PowerShell

    [PowerShell]メール送信用関数

    本記事で使用しているSmtpClientは2018年現在非推奨となって…

  3. Windows 10

    Microsoft Edgeの拡張機能を色々試してみた。

    前回の記事ではMicrosoft Edgeの拡張機能(Microsof…

  4. Windows 10

    Selenium WebDriverを使用してMicrosoft EdgeとOfficeを連携させる…

    この記事はSelenium/Appiumアドベントカレンダー2015の…

  5. Windows関連

    [Windows 8.1]16ビットアプリケーションを動かす。

    ※ 下記はWindows 8.1 RTM(日本語版・32ビット)に基づ…

  6. Windows関連

    ドラッグ&ドロップした画像をクリップボードにコピーするバッチファイル

    いくつか画像ファイルを編集する必要があったときに書いたバッチ(というよ…

コメント

  • コメント (0)

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

  1. この記事へのコメントはありません。

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP