使用 selenium 时禁用 Safari 中的自动警告
Disable automation warning in Safari when using selenium
我想在 safari 中使用 selenium 进行测试。
不幸的是,当我尝试使用 safari 调试问题时,会出现一条通知,要求我在 safari 中禁用自动化或退出(附图)。
为什么我不能像在 Chrome 和 FireFox 中那样做(例如:按 F12 查看 DOM)?
Note: I'm using MacOs Catalina with Javascript & Python for selenium
这应该可以解决您的问题。
warnFromSafari = driver.SwitchTo().Alert();
warnFromSafari.Accept();
这个错误信息...
...表示 Safari 浏览器 对开发人员和自动化开发人员的支持默认 关闭 。
配置 Safari 以启用 WebDriver 支持
根据 Testing with WebDriver in Safari 中的文档,默认关闭 Safari 对开发人员的 WebDriver 支持。启用 WebDriver 支持取决于您的操作系统。
在 High Sierra 及之后:
您需要启用一次safaridriver。
/usr/bin/safaridriver --enable
如果您是从以前的 macOS 版本升级,您可能需要使用 sudo,如下所示:
sudo /usr/bin/safaridriver --enable
Sierra 及更早版本:
- 使“开发”菜单可用。选择
Safari
> Preferences
,然后在 Advanced
选项卡上,菜单栏中的 select Show Develop menu
。
- 选择
Develop
> Allow Remote Automation
。
- 授权 safaridriver 启动托管本地网络服务器的 XPC 服务。要允许此操作,请手动 运行
/usr/bin/safaridriver
一次并按照身份验证提示进行操作。
不幸的是,我们似乎无法暂停测试,与浏览器交互,然后使用 safaridriver 恢复测试,就像我们使用 geckodriver 和 chrome webdriver 一样。
最接近的选项是屏幕截图弹出窗口中的 'Stop Session'。
据我所知,列出的 3 个选项是:
关闭所有自动化 - 停止测试并关闭所有自动化设置。这将要求您再次允许远程 automation/enable safaridriver。
停止会话 - 这会停止测试但让浏览器保持打开状态,以便您可以手动与其交互并使用 Web Inspector 工具。
继续会话 - 这将关闭弹出窗口并继续测试。
所以,总结一下遇到#Safari 并尝试自动化它的所有其他(沮丧的)开发人员。由于这个限制,不可能编写自动化。
所以选项是:
- 在其他浏览器(例如chrome)中写入并验证它在 safari 中是否有效
- 在 safari 的其他会话中手动(手动)找到您的 locators/paths 然后插入到您的 automation-infra
并增加了复杂性 - Selenium 点击在许多地方不起作用,而在 chrome/ff/edge 上确实有效。
因此,可能的解决方案是在 DOM 中使用 JS - 但这也不完美。
希望情况会有所改善
我想在 safari 中使用 selenium 进行测试。
不幸的是,当我尝试使用 safari 调试问题时,会出现一条通知,要求我在 safari 中禁用自动化或退出(附图)。
为什么我不能像在 Chrome 和 FireFox 中那样做(例如:按 F12 查看 DOM)?
Note: I'm using MacOs Catalina with Javascript & Python for selenium
这应该可以解决您的问题。
warnFromSafari = driver.SwitchTo().Alert();
warnFromSafari.Accept();
这个错误信息...
...表示 Safari 浏览器
配置 Safari 以启用 WebDriver 支持
根据 Testing with WebDriver in Safari 中的文档,默认关闭 Safari 对开发人员的 WebDriver 支持。启用 WebDriver 支持取决于您的操作系统。
在 High Sierra 及之后:
您需要启用一次safaridriver。
/usr/bin/safaridriver --enable
如果您是从以前的 macOS 版本升级,您可能需要使用 sudo,如下所示:
sudo /usr/bin/safaridriver --enable
Sierra 及更早版本:
- 使“开发”菜单可用。选择
Safari
>Preferences
,然后在Advanced
选项卡上,菜单栏中的 selectShow Develop menu
。 - 选择
Develop
>Allow Remote Automation
。 - 授权 safaridriver 启动托管本地网络服务器的 XPC 服务。要允许此操作,请手动 运行
/usr/bin/safaridriver
一次并按照身份验证提示进行操作。
- 使“开发”菜单可用。选择
不幸的是,我们似乎无法暂停测试,与浏览器交互,然后使用 safaridriver 恢复测试,就像我们使用 geckodriver 和 chrome webdriver 一样。 最接近的选项是屏幕截图弹出窗口中的 'Stop Session'。
据我所知,列出的 3 个选项是:
关闭所有自动化 - 停止测试并关闭所有自动化设置。这将要求您再次允许远程 automation/enable safaridriver。
停止会话 - 这会停止测试但让浏览器保持打开状态,以便您可以手动与其交互并使用 Web Inspector 工具。
继续会话 - 这将关闭弹出窗口并继续测试。
所以,总结一下遇到#Safari 并尝试自动化它的所有其他(沮丧的)开发人员。由于这个限制,不可能编写自动化。
所以选项是:
- 在其他浏览器(例如chrome)中写入并验证它在 safari 中是否有效
- 在 safari 的其他会话中手动(手动)找到您的 locators/paths 然后插入到您的 automation-infra
并增加了复杂性 - Selenium 点击在许多地方不起作用,而在 chrome/ff/edge 上确实有效。 因此,可能的解决方案是在 DOM 中使用 JS - 但这也不完美。
希望情况会有所改善