证书”弹框问题"/>
python解决Chrome“选择证书”弹框问题
python解决Chrome“选择证书”弹框问题
解决该问题的思路:
由于该弹框是由浏览器进程控制的,如果使用一个线程是无法解决该问题的。解决该问题需要启用一个新的线程,该线程用于点击确认按钮。由于该弹窗是浏览器本身弹窗,应用程序本身是无法控制该弹窗,因此需要使用一些其他方法,类似于按键精灵东西,来点击确认。
实现点击确认方法
方法一:使用VBS+Python
第一步,准备循环点击Enter按钮的vbs脚本enter.vbs,脚本内容如下:
Set WshShell=WScript.CreateObject("WScript.Shell")
For i=1 To 2
WshShell.SendKeys "{enter}"
WScript.Sleep 1000
Next
第二步,写一个调用该脚本的python方法。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Author : WEL
# @Email : langhuang521@163
import subprocess
import time
import threading
from selenium import webdriver def enter():'''用于输入enter键,关闭弹出按钮(按默认选项值)'''time.sleep(5)subprocess.call("cscript enter.vbs")def open_baidu():'''打开百度页面'''browser = webdriver.Chrome()browser.get("")if __name__=="__main__":thre = threading.Thread(target=enter)runt = threading.Thread(target=open_baidu)runt.start()thre.start()
上方代码是完整的调用程序,vbs脚本和python脚本处于同级目录。执行python脚本时,后台会启动一个cscript进程用于点击enter按键操作,这时候鼠标要聚焦在浏览器上,这样enter操作才对弹框有效,所以这时候要估计好鼠标点击次数和循环时长。
该方法缺点是启动cscript时间过长且只能在window环境有效。
第二种方法:使用python的pynput模块
第一步,准备python脚本input_enter.py用于鼠标点击:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Author : WEL
# @Email : langhuang521@163
'''
该脚本用于输入enter键,关闭弹出按钮(按默认选项值)
'''
from pynput.keyboard import Key,Controller
import timefor i in range(5):time.sleep(3)control=Controller()control.press(Key.enter)control.release(Key.enter)
第二步,写一个调用该脚本的python方法。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Author : WEL
# @Email : langhuang521@163
import subprocess
import time
import threading
from selenium import webdriver def enter():'''用于输入enter键,关闭弹出按钮(按默认选项值)'''time.sleep(5)subprocess.call("python input_enter.py")def open_baidu():'''打开百度页面'''browser = webdriver.Chrome()browser.get("")if __name__=="__main__":thre = threading.Thread(target=enter)runt = threading.Thread(target=open_baidu)runt.start()thre.start()
上方代码是完整的调用程序,vbs脚本和python脚本处于同级目录。执行python脚本时,后台会运行input_enter.py脚本用于点击enter按键操作,这时候鼠标要聚焦在浏览器上,这样enter操作才对弹框有效,所以这时候要估计好鼠标点击次数和循环时长。该方法比vbs速度快且平台移植性好。推荐使用该方法。
更多推荐
python解决Chrome“选择证书”弹框问题
发布评论