はじめに
ブラウザ自動テストのデファクトスタンダードであるSelenium
そして正式リリースされたChromium版MicrosoftEdge
はたしてChromeDriverを使ってChromium版MicrosoftEdgeを操作することができるのか?
※動かせた時の感動は省略
2021/11/07 Selenium4が正式リリースされたので新たに記事を書きました
こちらの記事を参考にしてください:
【正式版】Selenium4のEdgeDriverでChromium版MicrosoftEdgeを動かす(IEモードもできるよ♪)
2020/01/23 色々間違っていたので修正しました
2020/06/14 色々状況が変わったので新たに記事を書きました
こちらの記事を参考にしてください:
Selenium4のEdgeDriverでChromium版MicrosoftEdgeを動かす
MsEdgeのv80以降で当記事のやり方を採用すると、以下のような例外が発生するようになってしまいました。。
System.InvalidOperationException: session not created: No matching capabilities found (SessionNotCreated)
やったこと
Chromium版MicrosoftEdgeの取得
こちらからダウンロード&インストール
msedgedriver.exeの取得
こちらからダウンロード
このとき、お手元の Edge のバージョンに対応した driver を取得する必要があります。

NuGet
ソース
ポイントは3つ
-
ChromeDriverクラスを使用する -
ChromeDriverServiceで、取得したmsedgedriver.exeを指定する -
ChromeOptions.BinaryLocationで、msedge.exeを指定する
// モジュールと同階層に driver.exe を配置した場合
var service = ChromeDriverService.CreateDefaultService(".", "msedgedriver.exe");
var options = new ChromeOptions
{
// MsEdgeがインストールされたパスを指定
BinaryLocation = @"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
};
// ヘッドレスモードも可能!
//options.AddArgument("--headless");
using (var driver = new ChromeDriver(service, 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.ToString("yyyyMMddHHmmss")}.png");
}
ヘッドレスにも対応!
オプション指定によるヘッドレスモードにも対応していることを確認しました!
options.AddArgument("--headless");
おわりに
BinaryLocationを直接指定する必要があるので環境ごとに変更する必要が出てくる可能性がある。
-
Selenium4以降、BinaryLocation
- ヘッドレスモードがサポートされているのは熱い。
driverはNuGet配布してほしいなぁ。
-
NuGetにてSelenium.WebDriver.MSEdgeDriverが配布されるようになりました!

