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 11

    Windows 11をクリーンインストールしてみました。

    下記記事にもあるように、10月5日(日本時間)にWindows 11が…

  2. Windows 10

    Microsoft Edgeでリンク先を開く

    Microsoft Edgeでリンク先を開く前々回の記事の関連…

  3. Windows 10

    Microsoft Update カタログから累積更新プログラムをダウンロードするVBScript

    「累積更新プログラム」とは、その名の通りOSを最新の状態に保つための更…

  4. Windows関連

    PCをクリーンインストールしたので普段使っているツールをまとめてみた。

    Office 2016のリリースに合わせてメインで使っているPCをクリ…

  5. Windows 10

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

    前回のイベント(下記記事参照)から8か月、Windows Inside…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

Translate

Chinese (Simplified)Chinese (Traditional)EnglishFrenchGermanJapaneseKoreanRussianSpanish

最近の記事

アーカイブ

PAGE TOP