如何解决如何在锁定屏幕的同时使用 Selenium 从带有证书的 Web 下载
我正在尝试使用 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.
我可以通过冻结鼠标来消除这个错误。但是在我锁定屏幕后,硒似乎无法再处理证书弹出窗口。有谁知道是否有解决方案?谢谢。
```
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
```
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。