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関連

    Windows 8 Release PreviewにはMicrosoft Security Esse…

    Windows 8 Release Preview 32ビット版・64…

  2. Office関連

    VBAでブラウザーを操作するSeleniumWrapperVBAの紹介

    Internet Explorerのサポートが終わり、VBAマクロから…

  3. Windows 10

    Microsoft Edgeのお気に入りをHTML形式でインポート・エクスポートする。

    以前当ブログでMicrosoft Edgeのお気に入りを編集する方法に…

  4. Windows 10

    【2017年3月版】Microsoft Edgeでブックマークレットを使う方法

    2015年8月にMicrosoft Edgeでブックマークレットを使う…

  5. Windows関連

    Windows 8を従来のスタイルに変更するスクリプト

    2012/3/2 追記:下記情報はWindows Develope…

  6. Windows関連

    [Windows 8.1]VB5CCEをインストールしてみました。

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

コメント

  • コメント (0)

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

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

Time limit is exhausted. Please reload CAPTCHA.

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

Translate

最近の記事

アーカイブ

PAGE TOP