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

    [Windows 10]Windows Ink ワークスペースの付箋を起動するショートカット

    前回の記事の関連です。前回はWindows Ink ワークスペ…

  2. Office関連

    【2017年1月版】Microsoft Edgeを操作するVBAマクロ(DOM編)(2)

    昨日の記事で、Microsoft Edgeを操作するVBAコードを改め…

  3. Windows 10

    Microsoft Edgeを起動するC#コード

    以前書いた記事「「ファイル名を指定して実行」からMicrosoft E…

  4. Excel

    起動中のMicrosoft EdgeからタイトルとURLを取得するVBAマクロ(DOM編)

    前回の記事で、UI Automationを使って起動中のMicroso…

  5. Windows関連

    OSのバージョン情報をクリップボードにコピーするVBScript

    OSのバージョンやビルド番号をブログの記事内に書くことがあるのですが、…

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP