You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium在Safari中实现身份验证自动填充的解决方案求助

解决Selenium JS在Safari中无法通过URL嵌入账号密码登录的问题

问题原因

Safari出于安全限制,已禁用URL中通过login:password@server.net格式进行HTTP基本认证的方式,因此该写法仅在Chrome、Firefox等浏览器生效,在Safari中无效。

解决方案

方案1:手动定位页面登录控件(推荐,通用所有浏览器)

如果登录通过页面内的用户名/密码输入框实现,直接定位元素并输入信息提交即可:

const { By } = require('selenium-webdriver');

// 打开目标站点
await driver.get("https://server.net");

// 输入用户名
const usernameField = await driver.findElement(By.id('username')); // 根据实际元素选择器修改
await usernameField.sendKeys('login');

// 输入密码
const passwordField = await driver.findElement(By.id('password')); // 根据实际元素选择器修改
await passwordField.sendKeys('password');

// 点击登录按钮
const loginButton = await driver.findElement(By.id('login-btn')); // 根据实际元素选择器修改
await loginButton.click();

方案2:处理Safari系统级认证弹窗

如果是浏览器弹出的HTTP基本认证对话框(非页面内控件),可通过Node.js调用AppleScript实现自动输入:

const { exec } = require('child_process');

// 先打开目标页面
await driver.get("https://server.net");

// 执行AppleScript自动填充认证信息
exec(`osascript -e 'tell application "Safari" to activate' 
-e 'tell application "System Events" to keystroke "login"' 
-e 'tell application "System Events" to keystroke tab' 
-e 'tell application "System Events" to keystroke "password"' 
-e 'tell application "System Events" to keystroke return'`, 
(err) => {
  if (err) console.error('处理认证弹窗失败:', err);
});

注意:使用此方法需要给运行脚本的终端/应用赋予「辅助功能」权限(系统设置-隐私与安全性-辅助功能)。

内容的提问来源于stack exchange,提问作者Darek Adamczyk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 13:25:17