blog

pythonでseleniumマルチブラウザを使う

あるプラットフォームに入った後、別のプラットフォームで承認操作を行い、その後戻って後続の操作を続ける必要がありました。 アイデアは、新しいグローバル辞書を作成することです、グローバル辞書に格納されてい...

Feb 4, 2020 · 3 min. read
シェア
マルチブラウザ対応。

あるプラットフォームに入った後、別のプラットフォームでの操作を承認する必要があり、その後に戻って操作を続ける必要があります。新しいグローバル辞書を作成し、すべてのブラウザのウェブドライバをグローバル辞書に格納し、ブラウザの操作を指定する必要があるときに、対応するキーを取り出すことです。ここで、キーは重複を防ぐために動的に生成されます。コードは以下の通りです。

def driver_key_num(driver):
 """
 動的ドライバはグローバル辞書として出力する。
 :param driver: driver 
 :return:辞書キーだ。
 """
 global driver_num
 global driver_dict
 driver_num_key = "driver_key" + str(driver_num)
 now_num = driver_num
 driver_num += 1
 driver_dict[driver_num_key] = driver
 driver_key = list(driver_dict.keys())
 return driver_key[now_num]

キーを入力しないと、デフォルトで最新のドライバが使用されます。

def driver_handle(browser_name):
 """
 現在のブラウザドライバを切り替える。
 :param browser_name: driver鍵だ。
 :return:driver,
 """
 if browser_name:
 return driver_dict[browser_name]
 else:
 global driver
 return driver
マルチブラウザオプション。
def browser_chrome(browser_path="", driver_path=""):
 """
 Googleカーネルに対応している。
 :param browser_path: ブラウザのパス。
 :param driver_path: ドライバーのパスは
 :return: driver 
 """
 global driver
 if len(browser_path) > 0:
 options = ChromeOptions()
 options.binary_location = browser_path
 else:
 options = None
 if len(driver_path) == 0 :
 driver_path = "chromedriver"
 driver = webdriver.Chrome(executable_path=driver_path, options=options)
 return driver
def browser_ie(browser_path="", driver_path=""):
 """
 ieカーネル・ブラウザの互換性。
 :param browser_path: ブラウザのパス。
 :param driver_path: ドライバのパス。
 :return: driver 
 """
 global driver
 if len(browser_path) > 0:
 options = IeOptions()
 options.binary_location = browser_path
 else:
 options = None
 if len(driver_path) == 0 :
 driver_path = "IEDriverServer.exe"
 driver = webdriver.Ie(executable_path=driver_path, options=options) # Settings-Security-4Areasで一律にセーフモードを有効にする必要がある。
 return driver
def browser_firefox(browser_path="", driver_path=""):
 """
 Firefoxと互換性がある。
 :param browser_path: ブラウザのパス。
 :param driver_path: ドライバのパス。
 :return: driver 
 """
 global driver
 if len(browser_path) > 0:
 options = FirefoxOptions()
 options.binary_location = browser_path
 else:
 options = None
 if len(driver_path) == 0 :
 driver_path = "geckodriver"
 driver = webdriver.Firefox(executable_path=driver_path, options=options)
 return driver

次のようにコードを開いてブラウズしてください。

browser_select = {
 "br360" : browser_chrome,
 "chrome" : browser_chrome,
 "firefox": browser_firefox,
 "ie": browser_ie
}
driver = browser_select[browser_type](path_selenium, chrome_driver)

xpathをスプライシングして、xpathの中で判断して、switch_to.frameを呼び出して切り替えを行い、操作後にswitch_to.default_content()を使って切り替えを戻すという感じです。

その他、ブラウザを開く、フレームを切り替える、イベントをクリックする、イベントをつかむ、閉じる、リフレッシュする、進む、戻る、ロードする、待つ、ドロップダウンボックスを選択する、プロパティを取得する、情報を入力する、などの基本的な機能は、それほど問題ではなく、スムーズにこなせます。

pythonでseleniumを使った上記の基本操作はオープンソースで公開されています。

オープンソースのアドレス

実際のコードパスは、projectextend

Read next

ローカルストレージ編のプロジェクト実践~フロントエンドのローカルストレージを扱う記事

フロントエンドのプロジェクト開発において、フロントエンドのローカルストレージは不可欠です。フロントエンドローカルストレージは:次に、これらのフロントエンドでよく使われるストレージメソッドを紹介します。 クッキーは、クライアントに格納されているテキストの小片であり、サイズは4kb以上することはできません、要求のインターフェイスでは、クッキーを運ぶために要求され、したがって...

Feb 4, 2020 · 7 min read