我在Python上使用Selenium来浏览Google-Chrome。 在我的应用程序中的某个时候会弹出SSL证书(假设在这里,我有合法的证书,我只需要按“确定”即可)。如果我理解正确,它不是浏览器的弹出窗口,而是操作系统的弹出窗口。因此,硒无法处理。为了解决这个问题,我尝试了pyautogui,它应该可以处理OS弹出窗口。
from selenium import webdriver
import pyautogui
driver = webdriver.Chrome()
driver.get(url) # fetching the page
res = driver.\
execute_script("return document.documentElement.outerHTML")
这时将弹出“证书”窗口。我尝试使用pyautogui单击它:
pyautogui.moveTo(100, 100, duration = 0.5)
但是问题在于,当证书弹出窗口出现时,脚本停止并且pyautogui无法移动鼠标来单击证书。当我在窗口上手动单击“确定”时,pyautogui开始工作。但是我需要它来自动单击“确定”。 有人知道如何处理此脚本冻结吗? 谢谢!
答案 0 :(得分:1)
设法用两个独立的线程解决了这个问题(感谢@ wizzwizz4的想法):
from selenium import webdriver
import pyautogui
def manage_os_popup():
time.sleep(5)
pyautogui.moveTo(100, 100, duration = 0.5)
time.sleep(1)
pyautogui.click()
my_thread = threading.Thread(target = manage_os_popup)
my_thread.start()
driver = webdriver.Chrome()
driver.get(url)
res = driver.\
execute_script("return document.documentElement.outerHTML")