#はじめに
ブラウザ自動テストのデファクトスタンダードである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
を取得する必要があります。
##ソース
ポイントは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
が配布されるようになりました!