首页 > 解决方案 > 如何使用 Selenium 在 Safari 浏览器上处理身份验证弹出窗口?

问题描述

在此处输入图像描述

当我尝试连接到我的一个内部网站https://staging.toyota.com时,我在 Safari 浏览器上收到一个身份验证弹出窗口,并且我使用 Robot 类编写了以下自定义函数来输入身份验证凭据

private static void loginTier1(String value) {
        System.out.println("I was called!!!");
        try {
            Robot r = new Robot();
            r.delay(6000);
            System.out.println("Inside loginTier1");
            for(char c : value.toCharArray()){
                if(c=='_') {
                    r.keyPress(KeyEvent.VK_SHIFT);
                    r.keyPress(KeyEvent.VK_MINUS);
                    r.keyRelease(KeyEvent.VK_MINUS);
                    r.keyRelease(KeyEvent.VK_SHIFT);
                }else if(c=='%') {
                    r.keyPress(KeyEvent.VK_SHIFT);
                    r.keyPress(KeyEvent.VK_5);
                    r.keyRelease(KeyEvent.VK_5);
                    r.keyRelease(KeyEvent.VK_SHIFT);
                }else if(c=='$') {
                    r.keyPress(KeyEvent.VK_SHIFT);
                    r.keyPress(KeyEvent.VK_4);
                    r.keyRelease(KeyEvent.VK_4);
                    r.keyRelease(KeyEvent.VK_SHIFT);
                }else if(c=='!') {
                    r.keyPress(KeyEvent.VK_SHIFT);
                    r.keyPress(KeyEvent.VK_1);
                    r.keyRelease(KeyEvent.VK_1);
                    r.keyRelease(KeyEvent.VK_SHIFT);
                }
                else {
                    if(Character.isAlphabetic(c) && Character.isUpperCase(c))
                        r.keyPress(KeyEvent.VK_SHIFT);
                    r.keyPress(KeyEvent.getExtendedKeyCodeForChar(c));
                    r.keyRelease(KeyEvent.getExtendedKeyCodeForChar(c));
                    if(Character.isAlphabetic(c) && Character.isUpperCase(c))
                        r.keyRelease(KeyEvent.VK_SHIFT);
                };

            }
        }catch(AWTException e) {
            throw new RuntimeException("robot fail: "+e.getMessage());
        }
    }

但在执行期间,Safari 浏览器不接受 KeyPress 事件,并被以下屏幕截图阻止

在此处输入图像描述

你能帮我解决这个问题吗?

标签: javaseleniumauthenticationselenium-webdriversafari

解决方案


推荐阅读