如何解决如何让Capybara通过Chrome Remote Driver利用资产
我正在尝试移至Bitbucket的CICD,并对我们的Rails应用进行docker化。我想利用browserlessio,但遇到一个问题,除非对资源进行预编译,否则我将无法访问它们,我不希望对每个推送的分支都这样做。
我的docker-compose文件将webdriver URL设置为"http://webdriver:3000/webdriver"
,这是我注册驱动程序的代码。
# Register the driver
driver_name = :remote_chrome
remote_host = 'http://webdriver:3000/webdriver'
Capybara.register_driver driver_name do |app|
Capybara::Selenium::Driver.new app,browser: :remote,url: remote_host,desired_capabilities: Selenium::WebDriver::Remote::Capabilities.chrome('goog:chromeOptions' =>
{ 'args' => ['--headless','--no-sandbox'] })
end
# Set JS driver
Capybara.javascript_driver = :remote_chrome
# Set proper ports and host
Capybara.server_host = '0.0.0.0'
Capybara.server_port = '3000'
Capybara.always_include_port = true
当资产进行预编译时,此设置可以正常工作,但是一旦将其删除并通过docker运行规范,就会出现此错误
Selenium::WebDriver::Error::WebDriverError:
unexpected response,code=404,content-type=""
Couldn't access session,did it timeout?
我可以肯定这是由于找不到资产。
我认为此链接是我的省钱之选,但似乎无济于事: https://www.neotericdesign.com/articles/2018/04/running-your-rails-test-suite-with-dockerized-selenium-on-gitlab-ci/
任何帮助将不胜感激。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。