前提・実現したいこと
SeleniumでEdgeのIeモードを動かしています。
新しいタブを開きたいのですが、ポップアップブロッカーによって開けません。
解決方法を教えて下さい。
発生している問題・エラーメッセージ
新しいタブを開こうとすると、URLの右側に「ポップアップがブロックされました」と表示され、タブが開けません。
該当のソースコード
python
1from selenium import webdriver 2from selenium.webdriver.chrome import service as fs 3import time 4from winreg import * 5 6ie_options = webdriver.IeOptions() 7ie_options.attach_to_edge_chrome = True 8ie_options.ignore_zoom_level = True 9ie_options.edge_executable_path = "C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe" 10 11#レジストリのPopupMgr値を変更 12def set_popupblocker_status(enabled): 13 key = OpenKey(HKEY_CURRENT_USER, r"Software\Microsoft\Internet Explorer\New Windows", 0, KEY_ALL_ACCESS) 14 SetValueEx(key, "PopupMgr", 0, REG_SZ, enabled) 15 CloseKey(key) 16 17try: 18 #レジストリ変更 19 set_popupblocker_status("no") 20 21 #ブラウザを開く(EdgeのIeモード) 22 ie_service = fs.Service(executable_path="IE driverがあるパス") 23 driver = webdriver.Ie(service=ie_service,options=ie_options) 24 25 #googleトップページに移動 26 driver.get("https://www.google.com/webhp?hl=ja&sa=X&ved=0ahUKEwjn7YH9zez0AhV3s1YBHR7lDX0QPAgI&safe=active&ssui=on") 27 28 #新しいタブでyahooトップ画面を開く 29 driver.execute_script("window.open('https://www.yahoo.co.jp/');") 30 31 time.sleep(5) 32 33finally: 34 driver.quit() 35 print("finished")
試したこと
①レジストリのPopupMgr値を変更
↓こちらの記事を参考に、レジストリの値を変更してポップアップブロックを無効にする方法を試しましたが、やはりブロックされてしまいます。
https://zenn.dev/dozo/articles/8c604e5b6f418e
https://tarunlalwani.com/post/selenium-disable-popup-blocker-different-browsers/
②driver.get()を行わない
試行錯誤の結果、新しいタブを開く前に一回でもdriver.get()を行うと本事象が発生することが分かりました。試しにdriver.get()の部分をコメントアウトして実行すると、ポップアップブロックはされず、新しいタブを開くことができました。
python
1from selenium import webdriver 2from selenium.webdriver.chrome import service as fs 3import time 4from winreg import * 5 6ie_options = webdriver.IeOptions() 7ie_options.attach_to_edge_chrome = True 8ie_options.ignore_zoom_level = True 9ie_options.edge_executable_path = "C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe" 10 11#レジストリのPopupMgr値を変更 12def set_popupblocker_status(enabled): 13 key = OpenKey(HKEY_CURRENT_USER, r"Software\Microsoft\Internet Explorer\New Windows", 0, KEY_ALL_ACCESS) 14 SetValueEx(key, "PopupMgr", 0, REG_SZ, enabled) 15 CloseKey(key) 16 17try: 18 #レジストリ変更 19 set_popupblocker_status("no") 20 21 #ブラウザを開く(EdgeのIeモード) 22 ie_service = fs.Service(executable_path="IE driverがあるパス") 23 driver = webdriver.Ie(service=ie_service,options=ie_options) 24 25 #googleトップページに移動 ←を行わないと新しいタブが開ける 26 #driver.get("https://www.google.com/webhp?hl=ja&sa=X&ved=0ahUKEwjn7YH9zez0AhV3s1YBHR7lDX0QPAgI&safe=active&ssui=on") 27 28 #新しいタブでyahooトップ画面を開く 29 driver.execute_script("window.open('https://www.yahoo.co.jp/');") 30 31 time.sleep(5) 32 33finally: 34 driver.quit() 35 print("finished")
しかしdriver.get()を行わないという縛りは避けたいため、この方法は使えません。
どなたか解決策のご教授の程宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー