如何让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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...