2021/11/07 Selenium4が正式リリースされたので新たに記事を書きました
こちらの記事を参考にしてください:
【正式版】Selenium4のEdgeDriverでChromium版MicrosoftEdgeを動かす(IEモードもできるよ♪)
以下、Selenium4のα版という前提の下お楽しみください。
#はじめに
以前こんな記事を書きました:
【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
の取得
こちらからダウンロード&インストール
###注意
-
Selenium 4
はα版なので、Visual Studio の場合「✅プレリリースを含める」にチェック入れる必要があります
-
お手元の
Edge
のバージョンに対応したdriver
を取得する必要があります。
- MsEdgeでこのURLを叩けばOK:edge://settings/help
- より高いバージョンのEdge(β版など)を動かしたい場合はこちらから
msedgedriver
をダウンロード
##ソース
ポイントは2つ
-
EdgeDriver
クラスを使用する -
EdgeOptions
で、UseChromium = true
とする
以前書いた記事と比較すると、より自然な実装ができるようになりました。嬉しい!
ヘッドレスモードも画面ショットも問題ないですよ!
var options = new EdgeOptions
{
UseChromium = true
};
// Headlessモードはこんな感じ:
//options.AddArgument("--headless");
using (var driver = new EdgeDriver(options))
{
var wait = new WebDriverWait(driver, new TimeSpan(0, 0, 5));
driver.Navigate().GoToUrl("https://www.google.com");
var q = driver.FindElementByName("q");
q.SendKeys("Chromium");
q.Submit();
wait.Until(ExpectedConditions.TitleIs("Chromium - Google 検索"));
((ITakesScreenshot)driver).GetScreenshot().SaveAsFile($"{DateTime.Now:yyyyMMddHHmmss}.png");
}
#おわりに
-
Selenium 4
がんばれ!早く正式版になってくれ~!