スポンサーリンク

C# + Selenium ためしてみた

マイクロソフトの公式ドキュメントでSeleniumを使ってC#でEdgeを操作しているサンプルがあったのでためしてみたので紹介。
NuGetからSelenium.WebDriverをインストールして使います。

Seleniumとは?

SeleniumはWebブラウザを操作(決められた手順を実行)してテストを自動化するためのツール。
さまざまなブラウザ(Edge、Chrome、firefoxなど)に対応している。
また、Webサイトから自動で情報をあつめる作業(スクレイピング)によく利用されている。

準備

まず、プログラムを実行するPCに対象のブラウザ(今回はEdge)がインストールされている必要があります。次にマイクロソフトのページからEdgeのバージョンにあったWebDriverをダウンロードして適当な場所に保存します。

Microsoft Edgeのバージョンを確認

Edge右上の「設定など」⇒「ヘルプとフィードバック」⇒「Microsoft Edgeについて」

Edge用WebDriverのダウンロード

以下のページからバージョンにあったドライバーをダウンロードする。

Microsoft Edge WebDriver - Microsoft Edge Developer
Close the loop on your developer cycle by automating testing of your website in Microsoft Edge with Microsoft Edge WebDriver

自分の環境はWindowsなので「x64」を選択、ダウンロードしたzipを解凍して中の「msedgedriver.exe」を適当な場所に配置。

テストした環境

Windows10
Visual Studio 2022(.NET6)
Microsoft Edge バージョン 101.0.1210.32
Microsoft Edge ドライバー バージョン: 101.0.1210.32

Seleniumのインストール

NuGetからSelenium.WebDriverをインストールします。
VisualStudioでプロジェクトを作成したら以下の手順でインストールします。

プロジェクトの作り方は以下の記事にまとめてあります。

[C#]VisualStudio2022の使い方(コンソールアプリの作成)
インストールしたVisualStudio2022を使ってコンソールアプリを1から作ってみます。コンソールアプリはプログラマっぽい黒い画面で動くアプリです。インストールがまだの方は、こちらの記事を参考にしてください。...

メニュー「プロジェクト」⇒「NuGetパッケージの管理」を選択

NuGetのタブが開いたら、「参照」をクリック「Selenium.WebDriver」を探してクリックします。
検索ボックスに「Selenium」と入力するとすぐでてきます。

「インストール」ボタンをクリック

このメッセージが出てきた場合は「OK」ボタンをクリック。

プロジェクトにSelenium.WebDriverが追加されます。

サンプルを改良して実行してみる

マイクロソフトのページにサンプルとして「Edgeを起動してBingのトップにアクセスし、検索ボックスにキーワードを入力して検索結果のページを表示する」というのがあったので試してみます。

ちょっと改良して検索結果のページタイトルをコンソールに出力してみた。
EdgeDriverの起動パラメータとしてWebDriverを保存したフォルダパスを渡すようにしてます。
Selenium4からDriverServiceにいれて渡すようになったみたい。

using OpenQA.Selenium;
using OpenQA.Selenium.Edge;

//msedgedriver.exeがあるフォルダパス
var driverPath = @"D:\AppPortable\WebDriver";
var service = EdgeDriverService.CreateDefaultService(driverPath);

//ヘッドレスモードで起動
var option = new EdgeOptions();
option.AddArgument("headless");

var driver = new EdgeDriver(service, option);
try {
    driver.Url = "https://bing.com";

    //検索ボックスにキーワードを入力して実行
    var input = driver.FindElement(By.Id("sb_form_q"));
    input.SendKeys("Microsoft Docs C#");
    input.Submit();

    //検索結果のページタイトルを取得して表示
    var e_result = driver.FindElement(By.Id("b_results"));
    var e_resultList = e_result.FindElements(By.CssSelector("li[class='b_algo']"));
    var titles = e_resultList.Select(e => e.FindElement(By.CssSelector("div[class='b_title']")).Text);
    foreach (var title in titles)
    {
        Console.WriteLine(title);
    }
}
finally {
    driver.Quit();
}
C# 関連のドキュメント - はじめに、チュートリアル ...
C# プログラミング ガイド | Microsoft Docs
C# docs - get started, tutorials, reference. | Microsoft …
C# の最初のステップ - Learn | Microsoft Docs
Documentacao do C# ? introducao, tutoriais, …
C# 文档 - 入?、教程、参考。 | Microsoft Docs
Microsoft
Microsoft Docsの文章:C#についての文章の引用元が …
Visual Studio 2022 バージョン 17.1 リリース ノート

いい感じ。

Chromeでもためしてみた

chromedriver.exeを入れてためしてみた。
「using OpenQA.Selenium.Edge;」を「using OpenQA.Selenium.Chrome;」に変えて、Edge~になってるのをChrome~にすればいいみたい。

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;

//chromedriver.exeがあるフォルダパス
var driverPath = @"D:\AppPortable\WebDriver";
var service = ChromeDriverService.CreateDefaultService(driverPath);

//ヘッドレスモードで起動
var option = new ChromeOptions();
//option.AddArgument("headless");

var driver = new ChromeDriver(service, option);
try {
    driver.Url = "https://bing.com";

    //検索ボックスにキーワードを入力して実行
    var input = driver.FindElement(By.Id("sb_form_q"));
    input.SendKeys("Microsoft Docs C#");
    input.Submit();
}
finally {
    driver.Quit();
}

参考ページ

WebDriver を使用して Microsoft Edge を自動化する - Microsoft Edge Development
Microsoft Edge で Web サイトまたはアプリをテストする方法、また WebDriver でブラウザーを自動化する方法。

¥3,520 (2022/04/28 19:09時点 | Amazon調べ)
¥2,750 (2022/04/28 19:18時点 | Amazon調べ)

C# プログラミング講座に戻る

コメント