マイクロソフトの公式ドキュメントでSeleniumを使ってC#でEdgeを操作しているサンプルがあったのでためしてみたので紹介。
NuGetからSelenium.WebDriverをインストールして使います。
Seleniumとは?
SeleniumはWebブラウザを操作(決められた手順を実行)してテストを自動化するためのツール。
さまざまなブラウザ(Edge、Chrome、firefoxなど)に対応している。
また、Webサイトから自動で情報をあつめる作業(スクレイピング)によく利用されている。
準備
まず、プログラムを実行するPCに対象のブラウザ(今回はEdge)がインストールされている必要があります。次にマイクロソフトのページからEdgeのバージョンにあったWebDriverをダウンロードして適当な場所に保存します。
Microsoft Edgeのバージョンを確認
Edge右上の「設定など」⇒「ヘルプとフィードバック」⇒「Microsoft Edgeについて」


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でプロジェクトを作成したら以下の手順でインストールします。
プロジェクトの作り方は以下の記事にまとめてあります。

メニュー「プロジェクト」⇒「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();
}
スクレイピングの参考にどうぞ
いろいろ試したみた記事になります。


参考ページ

C# 記事まとめページに戻る(他のサンプルコードもこちら)

コメント