我正在尝试使用selenium从需要证书的网页下载文件。我的计算机上有多个证书,因此每次出现弹出窗口时,我都需要选择正确的证书来访问该网页的内容。目前,当计算机未锁定时,我可以运行selenium并自动执行所有这些任务,而不会出现问题。但在运行代码脚本并锁定屏幕后,会遇到以下错误:
Exception in thread Thread-1:
Traceback (most recent call last):
File "C:\Users\lmsun\anaconda3\lib\threading.py", line 926, in _bootstrap_inner
self.run()
File "C:\Users\lmsun\anaconda3\lib\threading.py", line 870, in run
self._target(*self._args, **self._kwargs)
File "C:/Users/lmsun/Desktop/Five Dimensions Energy/Liming/ERCOT_Download/ERCOT_Download.py", line 52, in threaded_function2
pyautogui.press('down')
File "C:\Users\lmsun\anaconda3\lib\site-packages\pyautogui\__init__.py", line 1174, in press
failSafeCheck()
File "C:\Users\lmsun\anaconda3\lib\site-packages\pyautogui\__init__.py", line 1257, in failSafeCheck
raise FailSafeException('PyAutoGUI fail-safe triggered from mouse moving to a corner of the screen. To disable this fail-safe, set pyautogui.FAILSAFE to False. DISABLING FAIL-SAFE IS NOT RECOMMENDED.')
pyautogui.FailSafeException: PyAutoGUI fail-safe triggered from mouse moving to a corner of the screen. To disable this fail-safe, set pyautogui.FAILSAFE to False. DISABLING FAIL-SAFE IS NOT RECOMMENDED.
我可以通过冻结鼠标来消除这个错误。但在我锁定屏幕后,selenium似乎无法再处理证书弹出窗口。有人知道有没有解决办法吗?多谢各位
```
def threaded_function(url, browser):
# Calls the website
browser.get(url)
return
def threaded_function2():
global cert_num
# give enough time so that the pop will appear before the press
time.sleep(10) # this needs to be hardcoded, if pass in as a parameter, thread error occurs
# choose the right certification
for i in range(cert_num):
pyautogui.press('down')
time.sleep(2)
pyautogui.press('enter')
return
while ind2 < 5:
try:
if ind2 != 0:
print(f"Retrying open {folder_name_2}, {ind2 + 1}")
browser = webdriver.Chrome(driver_directory)
# Check version of msedgedriver.exe and Edge
str1 = browser.capabilities['browserVersion']
str2 = browser.capabilities['chrome']['chromedriverVersion'].split(' ')[0]
if str1[0:2] != str2[0:2]:
print("please download correct msedgedriver version")
return
print("Selenium operating starts...")
cert_num = int(input_df[cert_end + '\''].values.tolist()[0]) - 1
cert_dir = input_df[cert_end + '\''].values.tolist()[1]
thread2 = threading.Thread(target=threaded_function2)
thread2.start()
thread = threading.Thread(target=threaded_function(url, browser))
thread.start()
thread.join()
thread2.join()
if ind2 != 0:
print(f'The issue is solved, reopen window for {folder_name_2} successfully.')
ind2 = 5
```
目前没有回答
相关问题 更多 >
编程相关推荐