自动化代码中如何处理浏览器弹证书问题的总结

问题描述:浏览器打开去访问某一网址时,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();
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容