2

我一直在关注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 浏览器中。

此下载链接不包含单独的 Safari 扩展文件:

与版本 2.48.0 相比: http ://selenium-release.storage.googleapis.com/index.html?path=2.48/

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

注意:Safari 版本为 9.1.1

提前致谢,

4

2 回答 2

2

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

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

没有这个,它就行不通。

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

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

于 2016-07-14T15:10:05.073 回答
-1

Selenium 中的 Safari 支持远未完成和正常工作。也不是每个版本的 Selenium 在 Safari 驱动程序中都有变化,这就是为什么你应该使用最新的可用版本,它目前是 2.48,并且位于 Selenium 发布网站的相应目录中。

于 2016-06-21T12:44:36.910 回答