◆Selenium 4.0 を用いて Google Chrome の検査結果を取得する手順
1.準備
●OS:Windows 10 Pro 64bit Version 22H2
●IDE:Visual Studio Community 2022 Version 17.7.3
2.コンソールアプリケーション
言語:C#
フレームワーク: .NET 6.0
コンソールアプリケーションを✅最上位レベルのステートメント使用しない で作成
3.Nuget
Nuget で Selenium.Support, Selenium.WebDriver を導入
4.chromedriver.exe
プラットフォーム win64 をダウンロードして解凍
ソリューションエクスプローラー上で <追加> → <既存の項目> → <実行可能ファイル>
chromedriver.exe を追加、出力ディレクトリにコピー : 常にコピーする
5.ソースコード
- using System.Collections.ObjectModel;
- using System.Diagnostics;
- using System.Threading.Tasks;
- using OpenQA.Selenium;
- using OpenQA.Selenium.Chrome;
- using OpenQA.Selenium.Support.UI;
- namespace SeleniumChromeDemo
- {
- internal class Program
- {
- static void Main(string[] args)
- {
- // google chrome を起動
- System.Diagnostics.Process.Start(@"C:\Program Files\Google\Chrome\Application\chrome.exe", " -remote-debugging-port=9222 --user-data-dir=C:\\Temp_ForChromium");
- Thread.Sleep(3000);
- // 検索ワード
- string searchWord = "Selenium4.0 C# Program Sample";
- var options = new ChromeOptions
- {
- DebuggerAddress = "127.0.0.1:9222"
- };
- using (var driver = new ChromeDriver(options))
- {
- // 任意のブラウザ操作処理 ↓↓↓
- var wait = new WebDriverWait(driver, new TimeSpan(0, 0, 15));
- driver.Url = "https://www.google.com";
- var q = driver.FindElement(By.Name("q"));
- wait.Until(d => q.Displayed);
- q.Clear();
- q.SendKeys(searchWord);
- q.Submit();
- Thread.Sleep(1000);
- // ざっくり抽出
- ReadOnlyCollection<IWebElement> _elemnt_class = driver.FindElements(By.ClassName("MjjYud"));
- if (_elemnt_class.Count > 0)
- {
- foreach (IWebElement _e in _elemnt_class)
- {
- IWebElement _t;
- string _u = string.Empty;
- string _tx = string.Empty;
- try
- {
- _t = _e.FindElement(By.TagName("a")).FindElement(By.TagName("h3"));
- _tx = _t.Text;
- }
- catch
- {
- ;
- }
- try
- {
- _u = _e.FindElement(By.TagName("a")).GetAttribute("href");
- }
- catch
- {
- ;
- }
- // 検索された URL
- Console.WriteLine($"URL : {_tx}:{_u}");
- }
- }
- // 記事の抽出
- ReadOnlyCollection<IWebElement> _txt = driver.FindElements(By.XPath("//div[@data-sncf='1']"));
- if (_txt.Count > 0)
- {
- string _tt = string.Empty;
- foreach (IWebElement _e in _txt)
- {
- try
- {
- _tt = _e.Text;
- // 検索された記事
- Console.WriteLine($"Text : {_tt}");
- }
- catch
- {
- ;
- }
- }
- }
- }
- }
- }
- }
6.実行
URL と 記事の一部が取得できる
─以上─