硒路由与子域



我创建了一个docker compos文件,用于在容器内进行Capybara测试。 我目前面临的问题是我找不到路由 lvh.me 域子域的功能。当我将 lvh.me 添加到Selenium的主机文件中时,我得到的结果与我的测试失败相同。我可以通过哪种方式为子域添加一些路由到Selenium以接受像{{user}}这样的子域 lvh.me:3001

我的水豚配置

Capybara.register_driver :selenium do |app|
Capybara.app_host = "http://0.0.0.0:3001"
Capybara.server_host = '0.0.0.0'
Capybara.server_port = '3001'
Capybara.always_include_port = true
args = ['--no-default-browser-check', '--headless', '--start-maximized']
caps = Selenium::WebDriver::Remote::Capabilities.chrome("chromeOptions" => {"args" => args})
Capybara::Selenium::Driver.new(
app,
browser: :remote,
url: "http://hub:4444/wd/hub",
desired_capabilities: caps
)
end
Capybara.configure do |config|
config.default_driver = :rack_test
config.javascript_driver = :selenium
end

和我的码头工人撰写文件

version: '3'
services:
db:
image: postgres
volumes:
- ./tmp/db:/var/lib/postgresql/data
redis:
image: redis
volumes:
- ./tmp/redis:/var/lib/redis/data
web:
build: .
environment:
- REDIS_URL=redis://redis
- DATABASE_HOST=db
command: sh "/myapp/docker-entrypoint.sh"
volumes:
- .:/myapp
links:
- db
- redis
- hub
depends_on:
- db
- redis
ports:
- "3001:3001"
- "3000:3000"
hub:
container_name: hub
image: selenium/hub:3.9
ports:
- "4444:4444"
selenium:
container_name: selenium
image: selenium/node-chrome:3.9
environment:
HUB_PORT_4444_TCP_ADDR: hub
HUB_PORT_4444_TCP_PORT: 4444
depends_on:
- hub
links:
- hub

首先,您不应该在驱动程序注册中指定 Capybara 配置。其次,这将假设您正在webdocker 实例上运行测试——如果您实际上尝试在主机上运行测试,那么情况会略有不同。

Capybara.app_host需要设置为从浏览器的角度指向受测应用的运行位置的 URL。在您的情况下,浏览器在seleniumdocker 实例上运行,并且测试应该在web实例上启动 AUT——这意味着应该http://webCapybara.app_host(不需要端口,因为您已经指定了alway_include_port(。 这意味着你应该最终得到

Capybara.register_driver :selenium do |app|
args = ['--no-default-browser-check', '--headless', '--start-maximized']
caps = Selenium::WebDriver::Remote::Capabilities.chrome("chromeOptions" => {"args" => args})
Capybara::Selenium::Driver.new(
app,
browser: :remote,
url: "http://hub:4444/wd/hub",
desired_capabilities: caps
)
end
Capybara.configure do |config|
config.app_host = "http://web"
config.server_host = '0.0.0.0'
config.server_port = '3001'
config.always_include_port = true
config.default_driver = :rack_test
config.javascript_driver = :selenium
end

您的下一个问题是您想使用哪个lvh.me解析为127.0.0.1,但您需要它解析为分配给webdocker 实例的任何 ip。如果您在测试中使用了固定数量的子域,您应该能够通过seleniumdocker 实例配置 - https://docs.docker.com/compose/compose-file/#links - 中指定的link别名来处理它,或者如果您在 docker 撰写配置 - https://docs.docker.com/compose/compose-file/#aliases 中指定网络,则通过网络别名来处理。 如果您确实需要解析通配符 (*.lvh.me(,则需要使用通配符 CNAME 条目运行自己的 DNS 服务器(可能在 docker 设置中(,该条目将*.lvh.me解析为web

相关内容

  • 没有找到相关文章

最新更新