LoginSignup
8
7

More than 1 year has passed since last update.

SeleniumのChromeDriverでChromium版MicrosoftEdgeを動かす

Last updated at Posted at 2020-01-18

はじめに

ブラウザ自動テストのデファクトスタンダードである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を動かす

MsEdgev80以降で当記事のやり方を採用すると、以下のような例外が発生するようになってしまいました。。

System.InvalidOperationException: session not created: No matching capabilities found (SessionNotCreated)

やったこと

Chromium版MicrosoftEdgeの取得

こちらからダウンロード&インストール

msedgedriver.exeの取得

こちらからダウンロード
このとき、お手元の Edge のバージョンに対応した driver を取得する必要があります。
image.png

NuGet

Selenium系のモジュール参照
image.png

ソース

ポイントは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");

画面ショットがこんな感じで取得されます!
20200123233058.png

おわりに

  • BinaryLocationを直接指定する必要があるので環境ごとに変更する必要が出てくる可能性がある。
    • Selenium4 以降、BinaryLocation
  • ヘッドレスモードがサポートされているのは熱い。
  • driverNuGet 配布してほしいなぁ。
    • NuGet にて Selenium.WebDriver.MSEdgeDriver が配布されるようになりました!
8
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7