selenium/webdriver/firefox/binary.rb:134:在“路径"中:无法修改冻结的字符串(FrozenError) [英] selenium/webdriver/firefox/binary.rb:134:in `path': can't modify frozen String (FrozenError)

查看:299
本文介绍了selenium/webdriver/firefox/binary.rb:134:在“路径"中:无法修改冻结的字符串(FrozenError)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在硒中运行一个简单的Google查找代码,然后在EC2实例(Amazon Linux)上运行它.我在启动Firefox时遇到错误,无法理解该错误的含义.

I tried to run a simple google look up code in selenium and ran it on EC2 instance(Amazon Linux). I am getting an error launching Firefox and cannot understand what the error means.

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

Ruby version - ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux] selenium-webdriver version - 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)

这里需要一些帮助.

推荐答案

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

Also, as of selenium-webdriver 3.142.3, you can check the current Firefox binary path using this:

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

如果未找到二进制文件,则会抛出相同的FrozenError,如果在某处找到Firefox二进制文件,则返回二进制路径.

This would throw this same FrozenError if no binary is found, and return the binary path if a Firefox binary has been found somewhere.

还值得一提的是,在selenium-webdriver存储库中已打开一个问题如果您有兴趣的话,可以使错误消息更具解释性.

Also worth mentioning that an issue has been opened in the selenium-webdriver repo to make the error message more explanatory, if you're interested.

这篇关于selenium/webdriver/firefox/binary.rb:134:在“路径"中:无法修改冻结的字符串(FrozenError)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆