使用rspec单击filepicker模式中的按钮

时间:2012-11-19 22:37:49

标签: ruby-on-rails rspec filepicker.io

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

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

我收到此错误:

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

我正在观看浏览器打开并在达到此错误之前进展到此点。如何在filepicker模式中单击此按钮?

3 个答案:

答案 0 :(得分:1)

我无法使用Capybara-webkitPoltergeist(他们无头)进行此测试,因此我切换到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

答案 1 :(得分:0)

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

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

当然,由于跨域javascript调用会让人感到不安,但是rspec应该没问题

答案 2 :(得分:0)

原来我认为filepicker模式上的按钮是文件类型的输入元素,并且要在rspec上传图片我需要使用方法attach_file。