如何使用Safari浏览器安装Selenium 2.53的safari扩展

时间:2016-06-20 12:20:54

标签: selenium selenium-webdriver safari safaridriver

我一直关注wiki设置Selenium 2.48.0的Safari扩展程序:

这主要是有效的,但偶尔在我的测试脚本(用Ruby / Capybara编写)中得到一些奇怪的错误,如:

Selenium::WebDriver::Error::NoSuchElementError:
       Selenium::WebDriver::Error::NoSuchElementError
     # /Users/admin/.rvm/gems/ruby-2.2.1/gems/selenium-webdriver-2.53.0/lib/selenium/webdriver/common/search_context.rb:64:in `rescue in find_element'
     # /Users/admin/.rvm/gems/ruby-2.2.1/gems/selenium-webdriver-2.53.0/lib/selenium/webdriver/common/search_context.rb:55:in `find_element'
     # ./lib/about.rb:94:in `click_read_more_work'
     # ./spec/check_about_links.rb:91:in `block (3 levels) in <top (required)>'
     # ------------------
     # --- Caused by: ---
     # IO::EAGAINWaitReadable:
     #   Resource temporarily unavailable - read would block
     #   /Users/admin/.rvm/gems/ruby-2.2.1/gems/selenium-webdriver-2.53.0/lib/selenium/webdriver/safari/server.rb:63:in `read_nonblock'

Selenium::WebDriver::Error::UnknownError:
       Session is executing: findElements; cannot set current to: findElements
     # /Users/admin/.rvm/gems/ruby-2.2.1/gems/selenium-webdriver-2.53.0/lib/selenium/webdriver/safari/bridge.rb:88:in `raw_execute'
     # /Users/admin/.rvm/gems/ruby-2.2.1/gems/selenium-webdriver-2.53.0/lib/selenium/webdriver/remote/bridge.rb:627:in `execute'
     # /Users/admin/.rvm/gems/ruby-2.2.1/gems/selenium-webdriver-2.53.0/lib/selenium/webdriver/remote/bridge.rb:606:in `find_elements_by'
     # /Users/admin/.rvm/gems/ruby-2.2.1/gems/selenium-webdriver-2.53.0/lib/selenium/webdriver/common/search_context.rb:84:in `find_elements'

Capybara被称为最新版本的selenium webdriver gem:2.53.0但是根据我对上述文章的理解,来自Selenium 2.53.0的Safari扩展也需要存在于Safari浏览器中。

此下载link不包含单独的safari扩展文件:

与版本2.48.0形成鲜明对比: http://selenium-release.storage.googleapis.com/index.html?path=2.48/

安装safari扩展程序有什么变化,我错过了什么吗?

注意:Safari版本为9.1.1

提前致谢,

2 个答案:

答案 0 :(得分:2)

由于过去几年的安全性变化,您必须在本地登录时在每台目标计算机上手动安装Safari WebDriver扩展。 您无法自动执行此步骤。 它必须是自2016年1月上次更改以来已由注册的付费开发者帐户构建并代码签名的副本。

通常这意味着你应该自己构建它。

没有它,它将无法工作。

值得注意的是,扩展在大约两年内没有正式的代码更改。

值得注意的是,Apple悄悄宣布Safari 10拥有原生SafariDriver,作为W3C WebDriver草案RFC的一部分,要求所有浏览器提供Selenium WebDriver的WebDriver部分。

答案 1 :(得分:-1)

Selenium中的Safari支持远未完成且工作正常。此外,并非每个版本的Selenium都在Safari驱动程序中进行了更改,这就是为什么您应该使用目前最新版本2.48并且位于Selenium发布网站的相应目录中的原因。