无效参数:在docker中使用页面对象gem找不到文件



我正在使用Cheezy的页面对象gem在docker容器中运行一些基于浏览器的UI测试。

以下是不起作用的有问题的代码:

file_field(:the_file, name: 'file_source')
def upload_file(csv_file)
puts "CURRENT DIR: #{Dir.pwd}"
self.the_file = Dir.pwd + "/config/data/#{csv_file}"
sleep(1)
upload_button
end

命令:

docker run -v `pwd`:/app ruby:2.4 bash -c "cd /app && bundle install && /app/cucumber-command.sh"

cucumber-command.sh:

cucumber RUN_ON_BSTACK=true --tags @send_request --format pretty --format junit --out results

错误:

CURRENT DIR: /app
...
invalid argument: File not found : /app/config/data/GDPR.csv

但是,该文件存在于容器中:

# ls -l /app/config/data/GDPR.csv
-rw-r--r-- 1 1000 staff 11602 Jul 11 03:05 /app/config/data/GDPR.csv

有问题的线路是这样的:

self.the_file = Dir.pwd + "/config/data/#{csv_file}"

如果我不在docker容器中运行它,这会很好

我发现一件有趣的事情是,当我给它另一条路径时,错误是不同的:

No such file or directory - /var/lib/jenkins/workspace/tests/config/data/GDPR.csv (Errno::ENOENT)
(eval):1:in `process_watir_call'

这似乎是找不到文件的真正错误。

file_field在容器内执行时无法找到该文件。有人能帮我了解发生了什么以及如何解决这个问题吗?

事实上,我需要一个允许文件上传到远程系统(BrowserStack(上的文件检测器

这是我的hooks.rb中修复它的代码:

browser.driver.file_detector = lambda do |args|
str = args.first.to_s
str if File.exist?(str)
end

相关内容

  • 没有找到相关文章

最新更新