Google Chromeの[ダウンロード]ページに表示されるファイルのダウンロード速度を記録したくて Selenium を使ってC#から取得する方法を備忘録的に投稿します。
Selenium パッケージの追加
今回は C# から取得をしているので、SeleniumはVisual Studioの依存関係メニューから パッケージを追加していきます。
またプロジェクトに追加していない場合には[ソリューション エクスプローラー]の画面で、[依存関係]をマウスで右クリックで表示される[NuGetパッケージの管理]メニューを選択して表示される画面で、”Selenium”と検索して表示される一覧から[Selenium.WebDriver]と[Selenium.WebDriver.ChromeDriver]を追加します。
起動中のChromeを取得
Selenium を利用すると次のようなコードで Google Chrome を操作することが簡単にできます。
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
...
IWebDriver driver = new ChromeDriver();
driver.Url = "https://www.google.com/";
// driver を使ってChromeを操作
ざっくりとしたコードを書いていますが、Selenium ライブラリを利用すると簡単にChromeを操作することができるようになります。
ただし上のコードを実行した場合、新しくGoogle Chromeが起動して操作の対象になります。そもそもブラウザの自動化をするために利用することが多いので、新しく起動したブラウザで目的のURLに移動する流れが一般的な使い方になります。
例えば、既に起動中のGoogle Chromeを監視したいようなプログラムにしたい場合には、このコードは使えません。
既に起動中のGoogle Chromeを取得するには「ひと手間」加えることになります。
「ひと手間」とは、取得する対象のGoogle Chromeにデバック用のポートを指定して起動しておきます。
実際には次のようなコマンドで起動を行います。
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" -remote-debugging-port=9000
上記のコマンドを「コマンド プロンプト」などから実行すると、Google Chromeが起動して、指定したポートで待ち状態になります。(見た目は普通に起動した場合と変わりません)
起動したGoogle Chromeに対して、ポートを指定して Selenium で取得を行います。
var options = new ChromeOptions
{
Address = "127.0.0.1:9000"
};
var driver = new ChromeDriver(options);
driver.Url = "about:blank";
先にポートを指定して起動した、Google Chrome が取得されて操作対象になります。
まとめ
ポートを指定しておくことで、Selenium を使って起動中のGoogle Chromeを操作対象にすることができます。
起動中の Google Chrome を取得したい方の参考になれば幸いです。
スポンサーリンク
最後までご覧いただき、ありがとうございます。