Capybara:webkit 和 selenium 找不到 url,racktest 有效

Eld*_*der 5 selenium capybara ruby-on-rails-3 capybara-webkit

多域应用程序。本地使用 POW 服务器。黄瓜测试

在我设置 app_host 的步骤之一(子域属于帐户并每次都创建):

def set_current_subdomain(subdomain)
  Capybara.app_host = "http://#{subdomain}.example.com:#{Capybara.server_port}"
end
Run Code Online (Sandbox Code Playgroud)

在黄瓜设置中:

Capybara.run_server = true 
Capybara.server_port = 8200
Capybara.javascript_driver = :selenium #default driver when you using @javascript tag
Capybara.app = Rack::ShowExceptions.new(MyApp::Application)
Capybara.default_driver = :rack_test
Run Code Online (Sandbox Code Playgroud)

步骤示例

visit(new_user_session_url(subdomain: @account.subdomain, port: Capybara.server_port))
Run Code Online (Sandbox Code Playgroud)

黄瓜测试通过 :rack_test 通过,但通过 :webkit 或 :selenium 失败

Unable to load URL: http://veumbogan8d11d7feca.example.com:8200/signin because of error loading http://veumbogan8d11d7feca.example.com:8200/signin: Unknown error (Capybara::Webkit::InvalidResponseError)
Run Code Online (Sandbox Code Playgroud)

webkit_debug 输出:

Finished "EnableLogging" with response "Success()" 
Wrote response true "" 
Received "Visit" 
Started "Visit" 
Load started 
"Visit" started page load 
Started request to "http://kuphal375cb65167.example.com:8200/signin" 
Finished "Visit" with response "Success()" 
Received 0 from "http://kuphal375cb65167.example.com:8200/signin" 
Page finished with false 
Load finished 
Page load from command finished 
Wrote response false "{"class":"InvalidResponseError","message":"Unable to load URL: http://kuphal375cb65167.example.com:8200/signin because of error loading http://kuphal375cb65167.example.com:8200/signin: Unknown error"}" 
Run Code Online (Sandbox Code Playgroud)

使用 selenium 时,Firefox 打开时显示“未找到服务器”

test.log 中没有任何可疑内容:帐户已创建,通知电子邮件已发送等

  • 导轨 3.2.17
  • 蒙戈伊德 2.4.11
  • 水豚2.1.0
  • 网络工具包1.1.1
  • 硒-webdriver 2.40.0

希望获得有关如何调试此问题以及可能出现问题的建议

PS:database_cleaner设置:

require 'database_cleaner'
DatabaseCleaner.strategy = :truncation
DatabaseCleaner.orm = "mongoid"
Before { DatabaseCleaner.clean }
Run Code Online (Sandbox Code Playgroud)