【问题标题】:selenium/webdriver/firefox/binary.rb:134:in `path': can't modify frozen String (FrozenError)selenium/webdriver/firefox/binary.rb:134:in `path': 无法修改冻结字符串 (FrozenError)
【发布时间】:2019-10-24 16:07:59
【问题描述】:

我尝试在 selenium 中运行一个简单的谷歌查找代码,并在 EC2 实例(Amazon Linux)上运行它。我在启动 Firefox 时遇到错误,无法理解错误的含义。

Ruby 版本 - ruby​​ 2.6.3p62(2019-04-16 修订版 67580)[x86_64-linux] selenium-webdriver 版本 - 3.142.3

require 'selenium-webdriver'

options = Selenium::WebDriver::Firefox::Options.new(args: ['-headless'])
driver = Selenium::WebDriver.for(:firefox, options: options)

driver.get "http://google.com"

puts "Page title is #{driver.title}"

driver.quit

运行时ruby test.rb

Traceback (most recent call last):
    8: from test.rb:4:in `<main>'
    7: from /usr/local/rvm/gems/ruby-2.6.3/gems/selenium-webdriver-3.142.3/lib/selenium/webdriver.rb:88:in `for'
    6: from /usr/local/rvm/gems/ruby-2.6.3/gems/selenium-webdriver-3.142.3/lib/selenium/webdriver/common/driver.rb:54:in `for'
    5: from /usr/local/rvm/gems/ruby-2.6.3/gems/selenium-webdriver-3.142.3/lib/selenium/webdriver/firefox/driver.rb:33:in `new'
    4: from /usr/local/rvm/gems/ruby-2.6.3/gems/selenium-webdriver-3.142.3/lib/selenium/webdriver/firefox/driver.rb:33:in `new'
    3: from /usr/local/rvm/gems/ruby-2.6.3/gems/selenium-webdriver-3.142.3/lib/selenium/webdriver/firefox/marionette/driver.rb:38:in `initialize'
    2: from /usr/local/rvm/gems/ruby-2.6.3/gems/selenium-webdriver-3.142.3/lib/selenium/webdriver/common/driver.rb:299:in `service_url'
    1: from /usr/local/rvm/gems/ruby-2.6.3/gems/selenium-webdriver-3.142.3/lib/selenium/webdriver/common/service.rb:45:in `firefox'
/usr/local/rvm/gems/ruby-2.6.3/gems/selenium-webdriver-3.142.3/lib/selenium/webdriver/firefox/binary.rb:134:in `path': can't modify frozen String (FrozenError)

在这里需要一些帮助。

【问题讨论】:

    标签: ruby selenium selenium-webdriver rubygems selenium-firefoxdriver


    【解决方案1】:

    如果 Firefox 未安装,或者在您的路径上无法访问,您将收到该错误。

    如果您已经安装了,请重新安装。

    【讨论】:

      【解决方案2】:

      此外,从selenium-webdriver 3.142.3 开始,您可以使用以下命令检查当前的 Firefox 二进制路径:

      Selenium::WebDriver::Firefox::Binary.path
      

      如果没有找到二进制文件,这将抛出相同的FrozenError,如果在某处找到了 Firefox 二进制文件,则返回二进制路径。

      另外值得一提的是an issue has been openedselenium-webdriver repo 中,如果您有兴趣,可以使错误消息更易于解释。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-19
        • 1970-01-01
        • 1970-01-01
        • 2016-03-26
        相关资源
        最近更新 更多