スポンサーリンク
seleniumBasicを用いるプログラムの保守性を高めるポイントに「WebDriverのバージョンを管理する」ことがあると思います。
seleniumBasicはWebDriverを介してブラウザを操作するのですが、そのwebdriverとブラウザのバージョンは適合していなければなりません。
そのため、ブラウザの自動アップデートによりバージョンがずれ、プログラムが動作しなくなるケースがあります。
Edge、chrome、ie、firefoxなどのブラウザのバージョンが上がるごとに、最新のWebDriverをダウンロードし、その度に設定しなくてはなりません。毎回その作業を手動で行うことが面倒だと感じていました。
今回は、その作業をもっと楽に管理しやすくできないか検討してみました。
行いたいこと
- 古いWebDriverも変更せずに持っておきたい。
- WebDriverの差し替えを手動ではなく自動で行いたい。
- 各種ドライバー(ChromeDriver、EdgeDriver、FirefoxDriver、IEDriver、OperaDriver、PhantomJSDriver)で対応したい。
プログラムの詳細
このプログラムの場合はEdgeDriver仕様になっています。
「Dドライブ」>「Selenium」>「WebDriver」>「Microsoft_Edge」にWebdriverのバージョン毎のフォルダを用意した状態でこのプログラムを実行すると、Webドライバー起動前に「AppData\Local\SeleniumBasic」にコピペします。
Public Sub test()
'コピー元(このファイルをコピーして)
Dim driverCopyTargetPath_edge As String
driverCopyTargetPath_edge = "D:\Selenium\WebDriver\Microsoft_Edge\verXXX\msedgedriver.exe"
If Dir(driverCopyTargetPath_edge) = "" Then Exit Sub
'コピー先(このファイルパスにペーストする)
Dim driverOriginPath_edge As String
driverOriginPath_edge = Environ$("LOCALAPPDATA") & "\SeleniumBasic\edgedriver.exe"
If Dir(driverOriginPath_edge) = "" Then Exit Sub
'FileCopy コピーの元, コピーする先
FileCopy driverCopyTargetPath_edge, driverOriginPath_edge
Dim driver As New WebDriver
With driver
.Start "MicrosoftEdge"
.Get "http://www.yahoo.co.jp/"
.Window.Maximize
End With
End Sub
備考1
このプログラムに行きつくまで、Webドライバーの起動先を変更する方法を探していました。
はじめは「Setbinaryを用いることで行える」と思っていましたが、結局Setbinaryで指定できるのはWebブラウザの実行場所のパスであるとわかりました。このことについては「AppData\Local\SeleniumBasic」の「Selenium.chm」のヘルプファイルで確認できます。
※start,getなどのウェブDriverを利用する場合は、「AppData\Local\SeleniumBasic」にwebDriverがある必要があります。
次のサイトで紹介されているコードは素晴らしく、上で紹介したコードとは異なる方法でドライバー管理ができそうです。こちらも時間のある方は是非目を通してみて下さい。
【2018年7月版】SeleniumBasicでMicrosoft Edgeを操作してみました。 - 初心者備忘録
備考2
seleniumbasic(セレニウムベーシック)はVBAで動作します。
共有PC(共有機、共有パソコン)で複数のユーザーがプログラムを作成している場合、Dドライブのように他のユーザーでも手の届く場所にWebDriverを管理しておくと良いと思います。
雑記
先月27日、女優さんがお亡くなりになりました。突然の訃報に日本中が悲しみに包まれたと思います。私もそのうちの1人でした。「黄泉がえり」、「いま、会いにゆきます」、「不機嫌なジーン」、「ランチの女王」など、大ヒット作品に数多く出演されていて、その方は美しいだけでなく、バラエティー番組ではユーモラスな一面も見せてくれ、とても魅力的な女性でした。
多くの作品を通して彼女のことを「美しく強い女性」であると知った気になっていましたが、今となっては私たち視聴者は彼女の演じる姿から「そう見せられていただけ」だったのかもしれないと思ってしまいます。
そして、どうか身近な人の心に寄り添い、支えることのできる人間になりたいと強く願うばかりです。
最後までお付き合いいただきありがとうございます!
この情報が誰かの役にたてれば幸いです。