0

当我到达以下几点时,我正在 Rails 应用程序和我正在编写的集成测试中测试 filepicker.io 的实现:

sleep(5.0)
find_button('#fileUploadDummy').click

我收到此错误:

Failure/Error: find_button('#fileUploadDummy').click
     Capybara::ElementNotFound:

在出现此错误之前,我正在观察浏览器打开并进展到这一点。如何在文件选择器模式中单击此按钮?

4

3 回答 3

1

我无法使用Capybara-webkitor Poltergeist(它们是无头的)进行此测试,所以我切换到Selenium.

示例代码:

test 'filepicker upload' do
    # in case your default driver is :webkit
    Capybara.current_driver = :selenium

    # this click_on will trigger filepicker.io plugin
    click_on 'Upload'

    # waiting for filepicker.io
    sleep 5

    within_frame 'filepicker_dialog' do
        # attach image to filepicker file input and upload...
        find('#fileUploadInput', visible: false).set("#{Rails.root}/test/integration/test_image.png")
        sleep 5
    end
end

从我的调试来看,原始隐私或类似问题存在问题,因为我遇到了错误:

Unsafe JavaScript attempt to access frame with URL

于 2014-06-26T11:21:29.387 回答
0

您很可能需要首先获得 iframe 的句柄,然后在该文档中进行查找。我不确定这如何转换为 rspec,但等效的 js 代码将是

var iframe_doc = document.getElementById("filepicker_dialog").contentDocument;
iframe_doc.getElementById("fileUploadDummy")

当然这会因为跨域 javascript 调用而变得不安,但是 rspec 应该没问题

于 2012-11-20T05:31:15.363 回答
0

结果我认为文件选择器模式上的按钮是文件类型的输入元素,并且要在 rspec 中上传图片,我需要使用方法 attach_file。

于 2012-11-27T05:17:37.540 回答