Django Girls and Boys 備忘録

Python、Selenium、Django、java、iPhoneアプリ、Excelマクロなどで気付いたこと、覚えておきたいことなどを載せていきます。

【Python Selenium】ブラウザーごとのドライバー設定を変数にて簡単に切り替える方法例


以前の過去記事で、PythonからSeleniumを使用してWebサイトへアクセスする場合のドライバー設定を簡単な例を挙げて説明しました。

 

 

kuku81kuku81.hatenablog.com

 

 

その時は、Edgeの場合を例にあげて説明しました。

 

実際自分たちの場合ではそのようなアクセス処理をI.E.上で実現していたためにI.E.のサポート切れに伴いEdge化するという作業が必要となりました。

 

その時の経験では画面によってEdgeで動作が可能なものとEdgeだけでは動かずEdgeのI.E.モードで動かすことができたもの、それも動かずにしばらくI.E.のままで動かすしかなかったものなどに分かれました。

 

そのため、はじめのうちは作成する画面によってブラウザのドライバー設定を

Edge

EdgeのI.E.モード

I.E.

の3種類から選んでコーディングを変更してやっていました。

 

しかしながら途中からは、そのような都度変更するコーディング作業自体がだんだんと面倒になってきたこともあり、簡単な切替ではありますが、コードは変更せずにパラメータ変数の値で切り替えるように変更した経験があったためここに例として紹介しておきます。

 

 

 

1.ブラウザーの種類ごとのドライバー設定の切替方法例

 

以下がその例となります。

 

    
    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によって動いたり動かなかったりがあったためチェックを無効にする設定を入れていました。

 

必要あればということですが必要なければ取り払ってください。

 

 

kuku81kuku81.hatenablog.com

 

 

また、これらを含めた簡単な例ですが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()

 

 

 

以上がブラウザを変更した時に簡単にドライバー設定を切り替える場合のコード例になります。