WebDriver を使って、ブラウザ(Chrome)の起動と簡単な操作を行ってみます。
環境は Windows Visual Studio 2017 です。
WebDriver は NuGet で入れられます。Selenium.WebDriver と Selenium.Chrome.WebDriver を入れます。
Selenium.WebDriver が主なライブラリです。これの他に、ドライバ(chromedriver.exe)が必要になります。それが Selenium.Chrome.WebDriver になります。
ブラウザを起動させるのは以下のようになります。
var options = new ChromeOptions(); options.AddExcludedArgument("ignore-certifcate-errors"); options.AddArgument("--disable-infobars"); options.AddArgument("--renderer-process-limit=1"); options.AddArgument("--user-data-dir=./profile"); var service = ChromeDriverService.CreateDefaultService(); service.SuppressInitialDiagnosticInformation = true; service.HideCommandPromptWindow = true; var driver = new ChromeDriver(service, options); driver.Quit();
ChromeOptions クラスで、Chrome に対するいくつかのオプションを指定することができます。例えば–renderer-process-limit で起動する Chrome のプロセス数を抑制しています。
ChromeDriverService は chromedriver.exe と対応するもので、それに対するオプションを指定することができます。
詳細は[https://seleniumhq.github.io/selenium/docs/api/dotnet/index.html:title=公式サイト]で確認できます。
new ChromeDriver(service, options); のところで Chrome が起動します。Chrome とともに chromedriver.exe も起動します。
driver.Quit() で Chrome と chromedriver.exe が終了します。
なお、Chrome が異常終了したり、driver.Quit() を呼べないでプログラムが終了してしまった場合には、chromedriver.exe のプロセスが残ってしまうことがあり、この状態だと次に new ChromeDriver(service, options) したときに例外が出ることがあります。
そのような場合は、chromedriver.exe のプロセスを終了させて、しばらく待ってから実行するとうまくいくかもしれません。
また Chrome は頻繁にバージョンアップがありますが、古い chromedriver.exe ではうまく動かない場合が多々あります。chromedriver.exe はまめに最新版を入れたおいた方がよいでしょう。