MacOS控制iOS真机Safari自动化报错,Remote Automation已开启仍无效求助
解决iOS真机Safari自动化提示“Remote Automation is turned off”问题
以下是针对你环境(MacOS 11.6、iOS 16.3.1、Selenium 4.0.0-alpha-2)的具体解决方案:
1. 升级Selenium到稳定兼容版本
你当前使用的Selenium版本是2019年的测试版(4.0.0-alpha-2),完全不支持iOS 16这类新系统。必须升级到Selenium 4.8及以上稳定版本,该版本开始对iOS 15+的Safari自动化提供完善适配。
2. 配置Mac端Safari与SafariDriver权限
- 打开Mac「系统偏好设置」→「安全性与隐私」→「隐私」→「自动化」,确保「Safari」已被允许控制电脑。
- 开启Safari开发者模式:Safari菜单→「偏好设置」→「高级」,勾选「在菜单栏中显示“开发”菜单」;随后在顶部「开发」菜单中,确认「允许远程自动化」已勾选,同时选中「连接到[你的iPhone名称]」选项。
3. 重置iOS设备的信任与Remote Automation设置
- 重新插拔iOS设备,在设备上确认「信任此电脑」,Mac端也同步确认信任。
- 进入iOS「设置>Safari>高级」,先关闭再重新打开「Remote Automation」开关,重启Safari确保设置生效。
4. 修改代码指定设备UDID
老版本SafariOptions无法自动识别新iOS设备,需手动指定UDID:
- 连接设备到Mac,终端执行
idevice_id -l获取设备UDID。 - 更新代码配置:
public class IOSWebView { public static RemoteWebDriver getDriver() { SafariOptions safariOptions = new SafariOptions(); safariOptions.setCapability("platformName", "iOS"); // 替换为你的设备UDID safariOptions.setCapability("safari:deviceUDID", "your-device-udid-here"); return new SafariDriver(safariOptions); } public static void main(String[] args) { RemoteWebDriver driver = getDriver(); driver.get("https://www.qq.com"); System.out.println(driver.getCurrentUrl()); System.out.println(driver.getTitle()); driver.quit(); } }
5. 重启SafariDriver服务
终端执行以下命令清除缓存并重启服务:
sudo pkill safaridriver safaridriver --enable
内容的提问来源于stack exchange,提问作者user21249663
相关产品推荐
相关产品推荐

