使用
selenium
处理网页时, 碰到了跳出证书的情况
如下图 所见:
当使用
get
请求网页的时候, 由于网页一直处于跳出状态, 无法使用页面内容来进行操作, 只能卡死在这一步
考虑到只需要在当前页面用鼠标点击或者键盘回车即可;
但是
selenium
单独无法完成, 由于程序是从上往下运行, 所以考虑引入多线程的特性, 在
get
的同时, 使用多线程运行键盘操作
我的尝试如下:
使用到的包:
selenium, pynput, threading, time
from selenium import webdriver
from pynput.keyboard import Key, Controller
import threading
import time
url =
1、Win + R打开运行,输入regedit打开注册表编辑器
2、找到这个目录(没有的话依据此目录手动创建项):
HKEY_LOCAL_MACHINESOFTWAREPoliciesGoogleChromeAutoSelectCertificateForUrls
3、在AutoSelectCertificateForUrls中,右键
选择
新建 - 字符串值
4、名称为1,数据为{“pattern”:“*”,“filter”:{}}
5、打开Chrome
浏览器
,URL输
今天下午
处理
了一个ui自动化工程师提交给 我们测试技术委员会的 关于
selenium
+pytthon 的疑难杂症。
经过一番思考后成功解决,且方法极为简单可靠,具体代码在最后。
先看下这个疑难问题:
访问一个内部平台登陆页面,
然后弹出
证书
弹窗:
必须
点击
确定
按钮。否则无法继续加载登陆页面
手动
点击
一次之后,关
浏览器
下次打开仍然会弹出。
需求是想每次代码能自动
点击
确定
关闭弹窗,然后继续执行
解决该问题的思路:
由于该弹框是由
浏览器
进程控制的,如果使用一个线程是无法解决该问题的。解决该问题
需要
启用一个新的线程,该线程用于
点击
确认按钮。由于该弹窗是
浏览器
本身弹窗,应用程序本身是无法控制该弹窗,因此
需要
使用一些其他方法,类似于按键精灵东西,来
点击
确认。
实现
点击
确认方法
方法一:使用VBS+
Python
第一步,准备循环
点击
Enter按钮的vbs脚本enter.vbs,脚本内容如下:
Set WshShell=WScript.CreateObjec
1.问题:
使用
selenium
调用chrome
浏览器
访问https页面时,如果有多个
证书
会弹出
选择
框,
需要
手动
选择
,打断了自动化流程,怎么让这个
证书
自动被
选择
呢?
2.解决方案:
1>第一种方案是使用pywin32库实现:
import win32api
import win32con
def press_enter():
win32api.keybd_event(0x0D,0,0,0)
win32api.keybd_event(0x11,0,win32con.KEYE
enter.vbs脚本内容为:
Set WshShell = WScript.CreateObject("WScript.Shell")'提供对本地 Windows 外壳程序的访问...
python
使用此方法可以使用
对于
证书
的信任问题低版本的
selenium
无法实现,因为options的capability选项在
selenium
3.x版本才引入,高版本对于48以下的火狐不兼容,
需要
自己在环境变量中配置火狐
浏览器
的地址
time.sleep(3) #可以多等待几秒
pyautogui.press("enter") #按下键盘回车键
t = threading.Thread(target=press_enter)
t.setDaemon(True) #守护线程
t.start() #启动
dr = driver.get(url) #drver访问网址登陆页面
time.sle
Selenium
是支持 web
浏览器
自动化的一系列工具和库的综合项目。
Selenium
有很多功能, 但其核心是 web
浏览器
自动化的一个工具集, 它使用最好的技术来远程控制
浏览器
实例, 并模拟用户与
浏览器
的交互。它允许用户模拟终端用户执行的常见活动;将文本输入到字段中,
选择
下拉值和复选框,并单击文档中的链接。它还提供许多其他控件,比如鼠标移动、任意 JavaScript 执行等等。
由于公司
需要
,被测网站有
证书
加密,由于在
selenium
启动firefox的时候,它会重新建一个profile作为启动的profile,所以无论你怎么把站点设为可信任站点,在
selenium
启动的firefox中都是无效的。网上各种找方法,无疑都是这种思路:
【手动建立一个新的profile,将他放入一个目录中,在启动
selenium
server的时候,加入参数 -firefoxP...
在使用
selenium
做测试的时候,如果使用不同的
浏览器
模式,比如说*pifirefox 就会遇到,安全
证书
认证失败的错误,必须要手动去
处理
。不然测试就进行不下去。如下图所示。
我们要做的就是设置好firefox让它自动去
处理
。
1. 保存
证书
。我们
点击
View certificate 然后出现下面的界面。
然后
选择
Export保存在你想要的位置。