为selenium remote设置Rails环境url

时间:2017-01-19 14:59:37

标签: ruby-on-rails selenium capybara minitest

我得到了selenium远程配置和运行。我可以使用像minyst上的'visit root_path'这样的测试方法从我的计算机上访问我的开发服务器(使用'rails s'部署)'192.168.1.23:3000'。

然而,当我关闭我的开发服务器时,我无法在测试时访问我的测试服务器,我只是在找不到页面时出现chrome错误

测试文件:

require "test_helper"
feature "dashboard" do
  scenario "test1", :js => true  do
  #Rails.application.routes.default_url_options[:host]= 'http://192.168.1.23:3000' 
  visit root_path
end 

注意:在运行访问root_path

时,激活第4行会给我nil

test_helper.rb中

Capybara.configure do |config| 
  config.default_host = 'http://192.168.1.23:3000'
  config.app_host   = 'http://192.168.1.23:3000'
end

我也tried 测试环境,test.rb

Rails.application.default_url_options = {:host => "http://192.168.1.23:3000" }
Rails.application.routes.default_url_options = {:host => "http://192.168.1.23:3000" }

编辑: 我将rails服务器配置为侦听外部地址:

的boot.rb

#this lets listen to some interfaces,
#https://fullstacknotes.com/make-rails-4-2-listen-to-all-interface/
require 'rubygems'  
require 'rails/commands/server'

module Rails  
  class Server
    alias :default_options_bk :default_options
    def default_options
      default_options_bk.merge!(Host: '192.168.1.23')
    end
  end
end  

1 个答案:

答案 0 :(得分:1)

默认情况下,Capybara在随机端口上运行应用程序,但您已将app_host设置为仅在端口3000上连接(这是默认的开发服务器)。而不是在app_host设置

中设置固定端口
Capybara.always_include_port = true
Capybara.app_host = 'http://192.168.1.23`

然后,如果随机端口分配由于您的硒远程和本地计算机之间的防火墙问题而无法正常工作,则可以设置

Capybara.server_port = <some fixed port number the test app will get run on>