【问题标题】:python selenium webdriver safari driverpython selenium webdriver safari 驱动程序
【发布时间】:2011-07-16 05:41:54
【问题描述】:

快速提问,我一直在构建一个 python selenium 框架来测试我们的网站。我已经成功实现了 Firefox、Chrome 和 IE 来进行浏览器测试。但是一直在寻找Safari驱动。我知道在官方文档中它简要描述了它的不兼容性并且不支持 Safari。你们会建议我用 python 和 selenium 测试 Safari 功能吗?可以用python吗?

我搜索并搜索,似乎找不到任何相关的 Safari 驱动程序。

提前致谢,

【问题讨论】:

    标签: python selenium safari webdriver


    【解决方案1】:

    查看this blog post。它适用于 Java,但 Python 的过程应该大致相同。

    【讨论】:

    • 这不是答案。
    【解决方案2】:

    本地SafariDriver 的绑定尚未实现。如果您需要此功能,请在 Selenium 的错误跟踪器中标记以下问题:

    【讨论】:

    • 仍然只为 safari 从 python 包装 java :(
    【解决方案3】:

    我自己没有使用过它,但是有一个Safari driver 可用,作为浏览器扩展实现,它将javascript 注入每个页面。

    它有一些限制,例如无法处理警报,但希望它会有所帮助。

    【讨论】:

      【解决方案4】:

      Safari 驱动程序是一个 Safari 扩展程序,您可以在 seleniumhq.org 网站的下载部分找到一个链接。 http://docs.seleniumhq.org/download/

      您也可以从 Github 中查看源代码并进行构建。

      Safari 的 Python Selenium 绑定并没有真正实现,而是使用 java 实现。作为一个原因,您需要 Selenium-standalone-Server jar 文件。它必须在运行脚本的机器上的 PATH 中。

      【讨论】:

        【解决方案5】:

        Python 支持运行 Safari 测试,您可以在此博客上找到 python example

        另一个如何通过 selenium 网格调用 Safari 测试的示例,请注意 selenium 网格和节点应该正在运行。

        # -*- coding: utf-8 -*-
        import unittest
        from selenium import webdriver
        from selenium.webdriver.common.keys import Keys
        
        class PythonOrgSearch(unittest.TestCase):
        
        def setUp(self):
            self.driver = webdriver.Remote(command_executor='http://localhost:4444/wd/hub',desired_capabilities={'browserName':'safari','version':'safariversion','platform':'MAC'})
        
        def test_search_in_python_org(self):
            driver = self.driver
            driver.get("http://www.python.org")
            self.assertIn("Python", driver.title)
            driver.maximize_window()
            elem = driver.find_element_by_name("q")
            elem.send_keys("pycon")
            elem.send_keys(Keys.RETURN)
            assert "No results found." not in driver.page_source
        
        
        def tearDown(self):
            self.driver.quit()
        
        if __name__ == "__main__":
            unittest.main()
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-09-07
          • 2014-09-03
          • 2019-08-13
          • 1970-01-01
          • 1970-01-01
          • 2012-12-05
          • 2013-11-27
          • 2015-05-21
          相关资源
          最近更新 更多