0

在 Rails 中,当我们将 capybara 与 selenium 一起使用时,默认情况下它们会为我们的 rails 应用程序运行机架服务器,我们可以在不运行实际应用程序的情况下对其进行测试。

那么让我解释一下它的含义:

因此,当我们为 rails 配置 capybara rspec 和 selenium 时,不需要单独运行您的 rails 服务器,当我们运行规范以及访问规范中应用程序的任何 URL 时,它就可以正常工作。它发生是因为它在后台创建了一个机架服务器。

现在我使用 Selenoid 而不是 selenium,但机架服务器无法正常工作。那么 selenoid 是否仅适用于远程 url 而它不创建任何机架应用程序?

让我知道是否有任何其他信息。是必须的。

谢谢!

4

1 回答 1

0

Selenoid 是 selenium 网格的替代品,并管理您用于测试的浏览器实例。它与运行被测应用程序无关。

您遇到的问题是 Capybara 在您运行测试的机器上运行应用程序,但是当使用 selenoid 时,浏览器正在其他机器(容器)上运行。这意味着当 Capybara 启动应用程序并告诉浏览器访问时https://localhost:<some port>/some/path,该localhost引用对于运行在其他机器上的浏览器不再正确。要更正此问题,您需要设置Capybara.app_host为运行测试的 url,从运行浏览器实例的机器/容器中可以看出。根据容器网络的具体配置方式,您还需要修复 Capybara 用于运行应用程序的端口或指定Capybara.always_include_port选项。

Capybara.app_host = "http://local_machine_as_seen_from_containers" 
Capybara.always_include_port = true

或者

Capybara.server_port = 1234 # some port number
Capybara.app_host = "http://local_machine_as_seen_from_containers:#{Capybara.server_port}"
于 2019-03-27T16:35:19.040 回答