Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Selenium::WebDriver::Error::InvalidSessionIdError导致Rspec失败_Ruby On Rails_Selenium_Selenium Webdriver_Rspec_Turnip - Fatal编程技术网

Ruby on rails Selenium::WebDriver::Error::InvalidSessionIdError导致Rspec失败

Ruby on rails Selenium::WebDriver::Error::InvalidSessionIdError导致Rspec失败,ruby-on-rails,selenium,selenium-webdriver,rspec,turnip,Ruby On Rails,Selenium,Selenium Webdriver,Rspec,Turnip,编辑:萝卜片是一条红鲱鱼。单独运行rspec本身仍然是一个问题 调用示例: bundle exec rspec spec/features/subscription\u spec.rb:33 错误: Failures:

编辑:萝卜片是一条红鲱鱼。单独运行rspec本身仍然是一个问题

调用示例:

bundle exec rspec spec/features/subscription\u spec.rb:33

错误:

Failures:
                                                                                                                                                                                                                                             
  1) Subscription should redirect to back for free subscription                                                                                                                                                                              
     Got 0 failures and 2 other errors:                                                                                                                                                                                                      

     1.1) Failure/Error: visit subscription_status_path

          Selenium::WebDriver::Error::NoSuchWindowError:
            Browsing context has been discarded
          # WebDriverError@chrome://marionette/content/error.js:175:5
          # NoSuchWindowError@chrome://marionette/content/error.js:409:5
          # assert.that/<@chrome://marionette/content/assert.js:428:13                                                                                                                                                                       
          # assert.open@chrome://marionette/content/assert.js:183:72
          # GeckoDriver.prototype.get@chrome://marionette/content/driver.js:1109:10
          # despatch@chrome://marionette/content/server.js:305:40
          # execute@chrome://marionette/content/server.js:275:16
          # onPacket/<@chrome://marionette/content/server.js:248:20
          # onPacket@chrome://marionette/content/server.js:249:9
          # _onJSONObjectReady/<@chrome://marionette/content/transport.js:503:20
          # /usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/response.rb:72:in `assert_ok'                                                                                                                    
          # /usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/response.rb:34:in `initialize'                                                                                                                   
          # /usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/http/common.rb:88:in `new'
          # /usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/http/common.rb:88:in `create_response'                                                                                                           
          # /usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/http/default.rb:114:in `request'                                                                                                                 
          # /usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/http/common.rb:64:in `call'
          # /usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/bridge.rb:167:in `execute'                                                                                                                       
          # /usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/w3c/bridge.rb:567:in `execute'                                                                                                                   
          # /usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/w3c/bridge.rb:59:in `get'                                                                                                                        
          # /usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/common/navigation.rb:32:in `to'                                                                                                                         
          # /usr/local/bundle/gems/capybara-3.32.2/lib/capybara/selenium/driver.rb:71:in `visit'                                                                                                                                             
          # /usr/local/bundle/gems/capybara-3.32.2/lib/capybara/session.rb:278:in `visit'                                                                                                                                                    
          # /usr/local/bundle/gems/capybara-3.32.2/lib/capybara/dsl.rb:58:in `block (2 levels) in <module:DSL>'                                                                                                                              
          # ./spec/features/subscription_spec.rb:36:in `block (2 levels) in <top (required)>'                                                                                                                                                
          # ./spec/rails_helper.rb:60:in `block (3 levels) in <top (required)>'                                                                                                                                                              
          # /usr/local/bundle/gems/database_cleaner-1.8.4/lib/database_cleaner/generic/base.rb:16:in `cleaning'                                                                                                                              
          # /usr/local/bundle/gems/database_cleaner-1.8.4/lib/database_cleaner/configuration.rb:87:in `block (2 levels) in cleaning'                                                                                                         
          # /usr/local/bundle/gems/database_cleaner-1.8.4/lib/database_cleaner/configuration.rb:88:in `cleaning'
          # ./spec/rails_helper.rb:59:in `block (2 levels) in <top (required)>'

     1.2) Failure/Error: example.run

          Selenium::WebDriver::Error::UnknownError:
            Failed to decode response from marionette
          # /usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/response.rb:72:in `assert_ok'
          # /usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/response.rb:34:in `initialize'
          # /usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/http/common.rb:88:in `new'
          # /usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/http/common.rb:88:in `create_response'
          # /usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/http/default.rb:114:in `request'
          # /usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/http/common.rb:64:in `call'
          # /usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/bridge.rb:167:in `execute'
          # /usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/w3c/bridge.rb:567:in `execute'
          # /usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/w3c/bridge.rb:92:in `alert_text'
          # /usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/common/alert.rb:27:in `initialize'
          # /usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/common/target_locator.rb:107:in `new'
          # /usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/common/target_locator.rb:107:in `alert'
          # /usr/local/bundle/gems/capybara-3.32.2/lib/capybara/selenium/driver_specializations/firefox_driver.rb:48:in `reset!'
          # /usr/local/bundle/gems/capybara-3.32.2/lib/capybara/session.rb:130:in `reset!'
          # /usr/local/bundle/gems/capybara-3.32.2/lib/capybara.rb:322:in `block in reset_sessions!'
          # /usr/local/bundle/gems/capybara-3.32.2/lib/capybara.rb:322:in `reverse_each'
          # /usr/local/bundle/gems/capybara-3.32.2/lib/capybara.rb:322:in `reset_sessions!'
          # /usr/local/bundle/gems/capybara-3.32.2/lib/capybara/rspec.rb:18:in `block (2 levels) in <top (required)>'
          # ./spec/rails_helper.rb:60:in `block (3 levels) in <top (required)>'
          # /usr/local/bundle/gems/database_cleaner-1.8.4/lib/database_cleaner/generic/base.rb:16:in `cleaning'
          # /usr/local/bundle/gems/database_cleaner-1.8.4/lib/database_cleaner/configuration.rb:87:in `block (2 levels) in cleaning'
          # /usr/local/bundle/gems/database_cleaner-1.8.4/lib/database_cleaner/configuration.rb:88:in `cleaning'
          # ./spec/rails_helper.rb:59:in `block (2 levels) in <top (required)>'

Finished in 9.46 seconds (files took 4.92 seconds to load)
2 examples, 1 failure

Failed examples:

rspec ./spec/features/subscription_spec.rb:33 # Subscription should redirect to back for free subscription

Traceback (most recent call last):
        12: from /usr/local/bundle/gems/capybara-3.32.2/lib/capybara/selenium/driver.rb:458:in `block in setup_exit_handler'
        11: from /usr/local/bundle/gems/capybara-3.32.2/lib/capybara/selenium/driver.rb:243:in `quit'
        10: from /usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/firefox/marionette/driver.rb:56:in `quit'
         9: from /usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/common/driver.rb:168:in `quit'
         8: from /usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/w3c/bridge.rb:155:in `quit'
         7: from /usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/w3c/bridge.rb:567:in `execute'
         6: from /usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/bridge.rb:167:in `execute'
         5: from /usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/http/common.rb:64:in `call'
         4: from /usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/http/default.rb:114:in `request'
         3: from /usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/http/common.rb:88:in `create_response'
         2: from /usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/http/common.rb:88:in `new'
         1: from /usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/response.rb:34:in `initialize'
/usr/local/bundle/gems/selenium-webdriver-3.142.7/lib/selenium/webdriver/remote/response.rb:72:in `assert_ok': Tried to run command without establishing a connection (Selenium::WebDriver::Error::InvalidSessionIdError)
turnip_helper.rb:

require'rails\u helper'
要求“turnip/capybara”#分步骤使用capybara DSL方法
要求“sidekiq/测试”
Dir.glob(“spec/steps/***steps.rb”){| f | load f,true}
rails_helper.rb:

ENV['RAILS_ENV']| |='test'
需要文件。展开\u路径(“../config/environment”,\u目录\u)
如果Rails.env.production,是否中止(“Rails环境正在生产模式下运行!”)?
需要“rspec/rails”
需要“设计”
需要“网络驱动程序”
需要“工厂机器人轨道”
需要“冒牌货”
需要“水豚”
Dir[Rails.root.join('spec','support','**','*.rb')。每个{f |都需要f}
开始
ActiveRecord::Migration.maintenant\u test\u schema!
rescue ActiveRecord::PendingMigrationError=>e
把e.带到美国
出口1
结束
Capybara.register_驱动程序:firefox_headless do|app|
选项=::Selenium::WebDriver::Firefox::options.new
options.args e
救援=>e
STDERR.puts“删除#{model.name}:#{e.inspect}的elasticsearch索引时出错”
结束
结束
结束
结束
结束
RSpec.configure do | config|
config.expect_with:rspec do| expections|
expections.include\u chain\u子句\u in\u custom\u matcher\u descriptions=true
结束
config.mock_with:rspec do|mock|
mocks.verify_partial_doubles=true
结束
config.shared\u context\u metadata\u behavior=:将\u应用于\u主机\u组
结束
订阅规格rb:33

scenario“应该重定向到后台进行免费订阅”,js:true-do
废话
结束
如果我运行的rspec测试没有声明
js:true
,它就可以工作

我做了更多的探索,结果发现即使不去追萝卜它也失败了。因此,萝卜片可能是一条红鲱鱼

在这一点上,失败的纯粹是rspec/capybara(与我的stackoverflow帖子中的错误相同)

有趣的是,这里有一个特别的任务:

scenario“应该看到现有订阅的错误消息”,js:true-do
高级用户确认
使用premium\u user.email“password”登录
访问“/订阅”
期望(第页)。包含内容“您已订阅”
结束
“sign_in_with”是一个使用水豚语法的助手:

模块功能
会话助手模块
def注册(电子邮件、密码、确认)
访问新用户注册路径
在“电子邮件”中填写:电子邮件
在“用户[密码]”中填写:password
填写“用户[密码确认]”,:with=>confirmation
单击按钮“注册!”
结束
def登录(电子邮件、密码)
访问新用户会话路径
在“电子邮件”中填写:电子邮件
在“密码”中填写:Password
单击按钮“登录”
结束
结束
结束

这(使用helper的
登录)工作正常。如果我在这个任务中使用binding.pry,我会看到Firefox在“登录”期间存在。但在这一步完成后,Firefox立即消失,然后“访问”失败,因为Firefox消失了。

我不知道为什么,但Firefox Headless似乎是个问题。无论出于何种原因,它对萝卜有效,但对纯rspec无效。当我不再使用Firefox,改用Chrome headless时,它确实起了作用。我不知道为什么,但Firefox headless似乎是个问题。无论出于何种原因,它对萝卜有效,但对纯rspec无效。当我不再使用Firefox,改用Chrome headless浏览器时,它成功了。