java - 如何使用 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 事件,并被以下屏幕截图阻止
你能帮我解决这个问题吗?
解决方案
推荐阅读
- python - 如何在莳萝中保存复杂的类对象?
- digital-signature - 有没有办法确保签名者在没有看到消息的情况下生成了有效的(消息、签名)对?
- lua - 使用 Neovim 配置 Packer
- reactjs - 如何测试 Material-UI Popover 关闭实现
- shell - Ubuntu Server 21.10 - 插入 USB 设备时如何运行 Shell 脚本
- android - 在 Android 中切换应用时保持视频通话应用运行
- css - 伪元素图像未显示在 GitHub 页面上
- python - 为自定义 GPT-NEO 模型实现 do_sampling
- javascript - 如何对变量中的子字符串数字求和?
- javascript - Vuetify - v-data-table 单元格中的图像 - 只有部分图像可见