Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 使用selenium时禁用Safari中的自动警告_Python 3.x_Selenium_Automation_Safari_Safaridriver - Fatal编程技术网

Python 3.x 使用selenium时禁用Safari中的自动警告

Python 3.x 使用selenium时禁用Safari中的自动警告,python-3.x,selenium,automation,safari,safaridriver,Python 3.x,Selenium,Automation,Safari,Safaridriver,我想使用selenium在safari中执行测试 不幸的是,当我尝试使用safari调试问题时,会出现一个通知,要求我在safari中禁用自动化或退出(附加图像) 为什么我不能在Chrome和FireFox中这样做(例如:按F12键查看DOM)? 注意:我正在将MacOs Catalina与selenium的Javascript和Python一起使用 这应该能解决你的问题 warnFromSafari = driver.SwitchTo().Alert(); warnFromSafari.A

我想使用selenium在safari中执行测试

不幸的是,当我尝试使用safari调试问题时,会出现一个通知,要求我在safari中禁用自动化或退出(附加图像)

为什么我不能在Chrome和FireFox中这样做(例如:按F12键查看DOM)?

注意:我正在将MacOs Catalina与selenium的Javascript和Python一起使用


这应该能解决你的问题

warnFromSafari = driver.SwitchTo().Alert();

warnFromSafari.Accept();
此错误消息

…表示默认情况下,Safari浏览器对开发人员和自动化开发人员的支持已关闭


配置Safari以启用WebDriver支持 根据Safari中的文档,默认情况下,开发人员的WebDriver支持处于关闭状态。启用WebDriver支持取决于您的操作系统

  • 在High Sierra及以后:

    • 您需要启用safaridriver一次

      /usr/bin/safaridriver --enable
      
    • 如果您是从以前的macOS版本升级,则可能需要按如下方式使用sudo:

      sudo /usr/bin/safaridriver --enable 
      
  • 塞拉和更早的国家:

  • 使“开发”菜单可用。选择
    Safari
    首选项
    ,并在
    高级
    选项卡上,选择菜单栏中的
    显示开发菜单
  • 选择
    开发
    允许远程自动化
  • 授权safaridriver启动承载本地web服务器的XPC服务。要允许此操作,请手动运行一次
    /usr/bin/safaridriver
    ,然后按照验证提示进行操作

不幸的是,我们似乎无法暂停测试,与浏览器交互,然后使用safaridriver恢复测试,就像geckodriver和chrome webdriver一样。 您拥有的最接近的选项是在屏幕截图的弹出窗口中“停止会话”

据我所见,列出的3个选项是:

关闭所有自动化-停止测试并关闭所有自动化设置。这将要求您再次允许远程自动化/启用safaridriver

停止会话-这将停止测试,但保持浏览器打开,以便您可以手动与其交互并使用Web Inspector工具


继续会话-关闭弹出窗口并继续测试。

因此,为所有遇到#Safari并尝试将其自动化的其他(沮丧的)开发人员总结一下。。由于这个限制,写自动化是不可能的

因此,选择是:

  • 在其他浏览器(如chrome)中写入,并验证其在safari中是否工作
  • 在safari的其他会话中手动(手动)找到您的定位器/路径,然后向您插入automation infra
  • 更复杂的是,Selenium点击在chrome/ff/edge的许多地方都不起作用。 所以,可能的解决方案是在DOM中使用JS,但这也不是完美的


    希望情况会有所改善

    不幸的是,这没有帮助:self.driver=webdriver.Safari()self.warnFromSafari=self.driver.SwitchTo().Alert()self.warnFromSafari.Accept()然后替换driver.SwitchTo().Alert();到self.driver.switchto().alert()不幸的是,我已经这么做了。自动化运行正常,但每当我单击浏览器时,就会出现此弹出窗口,并且不允许我在自动化实例中使用手动调试如果您阅读了其他答案,而不是将问题重写为答案,您可能知道可以关闭错误消息。如果你考虑编辑你的答案,我会考虑取消投票。请确保。@MyJobistBehappy-最初的问题涉及在调试模式下运行测试时手动干预和使用inspector功能的能力-“为什么我不能在Chrome和FireFox中这样做(例如:按F12查看DOM)?”我是唯一一个回答这个问题的人——从我所能看到的来看,我是唯一一个读过被问到的问题的人,包括你自己。被问到的问题是如何避免这个信息。“不幸的是,当我尝试使用safari调试问题时,会出现一个通知,要求我在safari中禁用自动化或退出”。问题是,“为什么我不能像在Chrome和FireFox中那样做呢?”。这意味着,为什么selenium不能像MacOS上的Chrome和Firefox那样运行呢。我明白这些词可能很难理解;)我仍然找不到解决办法。我得到的唯一结论是,苹果和safari对自动化不友好。因此,我们放弃了对safari的支持。