【问题标题】:How to test React Dropzone with Capybara Rails 5.2如何使用 Capybara Rails 5.2 测试 React Dropzone
【发布时间】:2018-07-11 23:11:36
【问题描述】:

我正在尝试使用 Selenium 在 Capybara、Rails 5.2 功能规范中测试文件上传。

我一直在寻找这个并找到了一些建议。其中之一是How do you test uploading a file with Capybara and Dropzone.js?

但是,这些解决方案适用于 jQuery 和 Dropzone.js。有没有人可以解决这个问题?

【问题讨论】:

    标签: capybara ruby-on-rails-5.2 react-dropzone


    【解决方案1】:

    99% 的时间将 visible: false 作为选项传递给 find 表明您在使用 Capybara 测试应用程序时做错了。

    如果您只是在文件输入因样式原因而隐藏时上传文件,那么 Capybara 文档会提供所有需要的信息 - https://www.rubydoc.info/gems/capybara/Capybara/Node/Actions#attach_file-instance_method - 以及专门用于处理这种情况的选项

    attach_file(Rails.root.join('spec', 'resources', 'test.png'), make_visible: true)
    

    【讨论】:

    • 如果 99% 是正确的,我可能是 1%。我已经用 react-dropzone 进行了测试并且它有效。 react-dropzone 的实现也使其隐藏。
    • @TrongBang 你不是,仅仅因为它“有效”并不能使它成为正确的方法 - 你很幸运选择使用 selenium 和 chromedriver 作为你的驱动程序,目前恰好不遵循 webdriver 规范,并允许您在不可见的文件字段元素处发送密钥(用户永远不会这样做)
    • 那么您有解决方案吗?对于当前的 react-dropzone 实现,您可能需要使用 javascript 使其可见,然后使用 attach_file() 方法。还有其他猜测吗?
    • 我确认代码按预期工作。您能否解释一下为什么 visible: false 主要是错误的? attach_file() 也使用 make_visible: true。有什么不同?谢谢
    • @TrongBang 这不是“技巧”,它是 Capybara 支持的功能,可以暂时使元素可见(因此得名 make_visible
    【解决方案2】:

    魔法密码:

            find('input[type="file"]', visible: false).send_keys \
                Rails.root.join('spec', 'resources', 'test.png')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-11
      • 2018-06-06
      • 1970-01-01
      • 2013-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多