C#とseleniumでミニマムなGUIアプリ

Pythonを使い、seleniumでブラウザの自動操縦を行っていましたが、pythonのexe化や、プログラム速度などの関係で、Cでできないかと考えていました。その結果、C#のwindowsアプリで作成するというアプローチに至りました。

C#も10年以上使用していないため、開発環境が大幅に変化しているのに驚きつつ、まずはミニマムなプログラムを作成しようと思い、実用性のないGUIを備えたseleniumアプリを作成してみました。

1.仕様

・GUIとしてボタンがある。

・ボタンクリックでseleniumを使用してgoogleをブラウザで開く。

・なにもせず、ブラウザを閉じる。

意味のないシンプルなアプリです^^;

2.開発環境について

visual studio comunity 2019:C#で実装

selenium:Nugetから取得

chrome web driver:Nugetから取得

インストール等は省略。

3.GUIを作る。

①プロジェクトの作成

②GUIを作る

プロパティで、ボタンの見た目を整える。

4.seleniumを試す

①NuGetでseleniumuをプロジェクトに追加します。

Webで検索したやり方だと、ソリューションエクスプローラーに「依存関係」があって、そこを右クリックすると「NuGetパッケージの管理」があるんですが、最新のものでは、「参照」となっているんですね。

②MainWindows.xaml.csにプログラムを追加

usingに以下を追加。

using System.IO;
using System.Reflection;
using OpenQA.Selenium.Chrome;

ボタンクリックイベントの関数にseleniumでgoogleを開くプログラムを追加。

private void Button_Click(object sender, RoutedEventArgs e)
{
   var chrome = new ChromeDriver(System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location));
   chrome.Url = @"http://www.google.com/";
   chrome.Quit();
}

※関数内部3行を追加

上記プログラムにより、ボタンをクリックすると、一瞬googleが開かれ、すぐに閉じる動作が確認できる。

実行時に、私の環境で、以下のエラーが出ました。

This version of ChromeDriver only supports Chrome version 74

google chromeブラウザアプリを開き、右上ボタンから、「ヘルプ」、「google chromeについて」を確認すると、バージョンが73.03…となっていました。自動でバージョンアップされ、chromeを再起動して74となったことを確認して実行したら解消できました。

pythonだと、自分でchromedriver.exeをダウンロードしてバージョンを合わせていましたが、この点はすごくわかりやすく、楽だなと思いました。

5.所感

雑なアプリを作成してしまいましたが、スタンドアロンなアプリとして開発できる点が良いなと感じています。このアプリを拡張してpythonのアプリを移植したいと思います。

6.参考

シンプルなGUIアプリのチュートリアル

https://qiita.com/Kosen-amai/items/f9e3df2aa80363f5af5b

C#でseleniumの使用

https://gazee.net/develop/csharp-selenium-chrome-driver/