问题描述:浏览器打开去访问某一网址时,https需要接受证书验证,页面弹出证书接受框需要去接受,此时若不处理证书弹出框,浏览器就一直处于加载状态。证书弹出框上的元素无法用driver去定位操作。
解决思路 :在代码中启用多线程的方法和配合操作键盘的命令去接受证书
具体的参考代码如下:
import java.awt.*;
import java.awt.event.KeyEvent;
public class CommonUtils implements Runnable {
//定义成员变量
private Integer seconds = 0;
//构造方法给成员变量赋值
public CommonUtils(Integer seconds) {
this.seconds = seconds;
}
//封装线程等待方法,以秒为单位
public void sleep(int seconds) {
try {
Thread.sleep(seconds * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//多线程实现Runnable接口,重写run方法
@Override
public void run() {
//线程等待
sleep(seconds);
//操作键盘的类
Robot robot = null;
try{
robot = new Robot();
}catch (AWTException e){
e.printStackTrace();
}
//调用keypress方法来实现按下Enter键
robot.keyPress(KeyEvent.VK_ENTER);
//调用keyrelease方法来实现释放Enter键
robot.keyRelease(KeyEvent.VK_ENTER);
}
// 开启子线程实现接受证书的方法
public static void pressKey(Integer seconds){
//创建子线程
Thread thread = new Thread(new CommonUtils(seconds));
//将子线程设置为守护线程
thread.setDaemon(true);
//线程开启
thread.start();
}
}