以前の過去記事で、PythonからSeleniumを使用してWebサイトへアクセスする場合のドライバー設定を簡単な例を挙げて説明しました。
その時は、Edgeの場合を例にあげて説明しました。
実際自分たちの場合ではそのようなアクセス処理をI.E.上で実現していたためにI.E.のサポート切れに伴いEdge化するという作業が必要となりました。
その時の経験では画面によってEdgeで動作が可能なものとEdgeだけでは動かずEdgeのI.E.モードで動かすことができたもの、それも動かずにしばらくI.E.のままで動かすしかなかったものなどに分かれました。
そのため、はじめのうちは作成する画面によってブラウザのドライバー設定を
Edge
EdgeのI.E.モード
I.E.
の3種類から選んでコーディングを変更してやっていました。
しかしながら途中からは、そのような都度変更するコーディング作業自体がだんだんと面倒になってきたこともあり、簡単な切替ではありますが、コードは変更せずにパラメータ変数の値で切り替えるように変更した経験があったためここに例として紹介しておきます。
以下がその例となります。
driverKind = 2 if driverKind==1:
# ドライバー指定でEdgeブラウザを開く
path_driver = os.getcwd()+'\msedgedriver.exe' edge_service = fs.Service(executable_path=path_driver) driver = webdriver.Edge(service=edge_service)
elif driverKind==2:
# ドライバー指定でEdgeのI.E.モードでブラウザを開く
ieOptions = webdriver.IeOptions() ieOptions.add_additional_option("ie.edgechromium", True) ########拡大率設定チェックと保護モードチェックしない設定######## ieOptions.ignore_zoom_level = True ieOptions.ignore_protected_mode_settings = True ############################################################ ieOptions.add_additional_option("ie.edgepath",'C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe') path_driver = os.getcwd()+'\IEDriverServer.exe' ie_service = fs.Service(executable_path=path_driver) driver = webdriver.Ie(service=ie_service, options=ieOptions) elif driverKind==3:
# ドライバー指定でI.E.でブラウザを開く
path_driver = os.getcwd()+'\IEDriverServer.exe' ie_service = fs.Service(executable_path=path_driver) driver = webdriver.Ie(service=ie_service)
このような形でドライバー設定を組み込んでおけばその時々に必要になるブラウザの種類によって先頭でdriverKindの値を1,2,3に変更することによってブラウザにあったドライバーに簡単にできるようになりました。
上記の例では、4行目などのos.getcwd()はカレントディレクトリを表しています。
また、EdgeのI.E.モードの場合のみ拡大率設定チェックと保護モード設定チェックを無効にしています。
元々EdgeのI.E.モードでやっていた時に画面の拡大率や保護モード設定がPCごとに違っているとPCによって動いたり動かなかったりがあったためチェックを無効にする設定を入れていました。
必要あればということですが必要なければ取り払ってください。
また、これらを含めた簡単な例ですがGoogle検索画面にアクセスする例は以下のようになります。
from selenium import webdriver from selenium.webdriver.chrome import service as fs import os ###################################################################### driverKind = 2 if driverKind==1: # ドライバー指定でEdgeブラウザを開く path_driver = os.getcwd()+'\msedgedriver.exe' edge_service = fs.Service(executable_path=path_driver) driver = webdriver.Edge(service=edge_service) elif driverKind==2: # ドライバー指定でEdgeのI.E.モードでブラウザを開く ieOptions = webdriver.IeOptions() ieOptions.add_additional_option("ie.edgechromium", True) ########拡大率設定チェックと保護モードチェックしない設定######## ieOptions.ignore_zoom_level = True ieOptions.ignore_protected_mode_settings = True ############################################################ ieOptions.add_additional_option("ie.edgepath",'C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe') path_driver = os.getcwd()+'\IEDriverServer.exe' ie_service = fs.Service(executable_path=path_driver) driver = webdriver.Ie(service=ie_service, options=ieOptions) elif driverKind==3: # ドライバー指定でI.E.でブラウザを開く path_driver = os.getcwd()+'\IEDriverServer.exe' ie_service = fs.Service(executable_path=path_driver) driver = webdriver.Ie(service=ie_service) ###################################################################### # URLを指定して、新しいタブを開く driver.get("https://www.google.co.jp") # タブを閉じる driver.close()
driver.quit()
以上がブラウザを変更した時に簡単にドライバー設定を切り替える場合のコード例になります。