【.NET/C#】WebDriverManagerでブラウザの更新に備える

ネコニウム研究所

PCを利用したモノづくりに関連する情報や超個人的なナレッジを掲載するブログ

【.NET/C#】WebDriverManagerでブラウザの更新に備える

2024-9-25 | ,

.NETのプロジェクトでWebDriverManagerを使ってWebDriverを自動で更新したい!

概要

今回の記事では、.NETのプロジェクトでWebDriverManagerを使ってWebDriverを自動で更新する掲載する。

ブラウザが更新されるとWebDriverも合わせて対応したバージョンに更新しないとブラウザを操作できなくなってしまうんだけども、毎度WebDriverを更新するのが面倒だ。面倒とはいえブラウザの更新を止めるのもセキュリティ的によろしくない。

そんな場合はどうすれば…!

WebDriverManagerでWebDriverを自動で更新すればいいじゃない。

仕様書

環境

  • NET 8.0
  • Selenium.Support 4.27.0
  • Selenium.WebDriver 4.27.0
  • WebDriverManager 2.17.4

手順書

まず、WebDriverManagerをインストールする。

PM> Install-Package WebDriverManager

WebDriverをインスタンス化する部分をWebDriverManagerを使ったコードに修正すればOKだ!

下記はEdgeを使う例。

using OpenQA.Selenium;
using OpenQA.Selenium.Edge;
using WebDriverManager;
using WebDriverManager.DriverConfigs.Impl;
using WebDriverManager.Helpers;

public class WebDriverManagerTest
{
    public static IWebDriver CreateDriver()
    {
        //var options = new ChromeOptions();
        var options = new EdgeOptions();

        new DriverManager().SetUpDriver(new EdgeConfig(), VersionResolveStrategy.MatchingBrowser);
        var driverVersion = new EdgeConfig().GetMatchingBrowserVersion();
        var driverPath = $"./Edge/{driverVersion}/x64/";
        var driverService = EdgeDriverService.CreateDefaultService(driverPath);
        IWebDriver driver = new EdgeDriver(driverService, options);
        return driver;
    }
}

下記はChromeを使う例。

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using WebDriverManager;
using WebDriverManager.DriverConfigs.Impl;
using WebDriverManager.Helpers;

public class WebDriverManagerTest
{
    public static IWebDriver CreateDriver()
    {
        var options = new ChromeOptions();

        new DriverManager().SetUpDriver(new ChromeConfig(), VersionResolveStrategy.MatchingBrowser);
        var driverVersion = new ChromeConfig().GetMatchingBrowserVersion();
        var driverPath = $"./Chrome/{driverVersion}/x64/";
        var driverService = ChromeDriverService.CreateDefaultService(driverPath);
        IWebDriver driver = new ChromeDriver(driverService, options);
        return driver;
    }
}

まとめ(感想文)

業務でWebDriverを使ってるんだけども、WebDriverManagerのおかげで業務効率化できた!
作者に圧倒的感謝。

参考文献・引用

下記のライブラリーのgithubのページを参考にさせて頂きました。ありがとうございました。