single.php

Seleniumで起動中のChromeを操作する方法

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 を取得したい方の参考になれば幸いです。

スポンサーリンク

最後までご覧いただき、ありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です