SeleniumのChromeDriverでGoogle Chrome以外のブラウザを動かす


はじめに

ブラウザ自動テストのデファクトスタンダードであるSelenium
そのChromeDriverを使ってGoogle Chrome以外のブラウザを操作することができるのか?
という遊び。

動かせた時の感動は省略

やったこと

Chrome.exe

ここから取得:https://download-chromium.appspot.com/
そして適当なパスに配置する
※後述するが、取り直すことになった…

NuGet

Selenium系のモジュール参照

ソース

var options = new ChromeOptions
{
    // 結局、いつもと違うのはここだけ!
    BinaryLocation = @"C:\Win_x64_638880_chrome-win\chrome-win\chrome.exe"
};

// ヘッドレスでもできたよ!
options.AddArgument("--headless");

using (var driver = new ChromeDriver(options))
{
    var wait = new WebDriverWait(driver, new TimeSpan(0, 0, 5));
    driver.Navigate().GoToUrl("https://www.google.com");
    driver.FindElementByName("q").SendKeys("Chromium");
    driver.FindElementByName("q").Submit();

    wait.Until(ExpectedConditions.TitleIs("Chromium - Google 検索"));
    ((ITakesScreenshot)driver).GetScreenshot().SaveAsFile($"{DateTime.Now.ToString("yyyyMMddHHmmss")}.png");
}

はまったこと

ChromeのバージョンとChromeDriverのバージョンがずれているとエラーになるので注意
こちらを参照ください:Chromiumの特定バージョンをダウンロードする

エラーはこんな感じ

ChromiumDriverSample.ChromiumChromeDriverTest.Sample が例外をスローしました: OpenQA.Selenium.ElementNotInteractableException: element not interactable (Session info: chrome=75.0.3770.0) (Driver info: chromedriver=74.0.3729.6 (255758eccf3d244491b8a1317aa76e1ce10d57e9-refs/branch-heads/3729@{#29}),platform=Windows NT 10.0.17763 x86_64)

おわりに

次はChromiumベースのMicrosoft Edgeを動かせるかどうかやってみたい。
BinaryLocation変えて起動してみるとこんな感じ。できそうな雰囲気はあった。

※現時点で、ChromeDriverの最新バージョンが75だったので検証保留

あとは、CefSharpで自作したブラウザとか動かしてみたい気持ちがある。