はじめに
以前こんな記事を書きました:
【SeleniumのChromeDriverでChromium版MicrosoftEdgeを動かす】
ブラウザ自動テストのデファクトスタンダードであるSelenium
そして正式リリースされたChromium版MicrosoftEdge
はたしてChromeDriver
を使ってChromium版MicrosoftEdgeを操作することができるのか?
が、色々と状況が変わったので改めて整理しなおしてみました!※動かせた時の感動は省略
変わったポイントは以下:
Selenium 4
を使いましょう ※NuGet
で取得可能(2020/06/14 時点で4.0.0-alpha05
)Selenium.WebDriver.MSEdgeDriver
を使いましょう ※NuGet
で取得可能(2020/06/14 時点で83.0.478.37
)- コーディングも自然な感じに実装できるようになりました! ※後述
参考文献:Use WebDriver (Chromium) for test automation
ちなみに
以前書いた記事のやり方だと、こんな例外が出るようになってしまいました:
System.InvalidOperationException: session not created: No matching capabilities found (SessionNotCreated)
やったこと
Chromium版MicrosoftEdge
の取得
こちらからダウンロード&インストール
NuGet
注意
Selenium 4
はα版なので、Visual Studio の場合「✅プレリリースを含める」にチェック入れる必要がありますお手元の
Edge
のバージョンに対応したdriver
を取得する必要があります。- MsEdgeでこのURLを叩けばOK:edge://settings/help
- より高いバージョンのEdge(β版など)を動かしたい場合はこちらから
msedgedriver
をダウンロード
ソース
ポイントは2つ
EdgeDriver
クラスを使用するEdgeOptions
で、UseChromium = true
とする
以前書いた記事と比較すると、より自然な実装ができるようになりました。嬉しい!
ヘッドレスモードも画面ショットも問題ないですよ!
varoptions=newEdgeOptions{UseChromium=true};// Headlessモードはこんな感じ://options.AddArgument("--headless");using(vardriver=newEdgeDriver(options)){varwait=newWebDriverWait(driver,newTimeSpan(0,0,5));driver.Navigate().GoToUrl("https://www.google.com");varq=driver.FindElementByName("q");q.SendKeys("Chromium");q.Submit();wait.Until(ExpectedConditions.TitleIs("Chromium - Google 検索"));((ITakesScreenshot)driver).GetScreenshot().SaveAsFile($"{DateTime.Now:yyyyMMddHHmmss}.png");}
おわりに
Selenium 4
がんばれ!早く正式版になってくれ~!