我在rails应用程序和我正在编写的集成测试中测试filepicker.io的实现,当我到达以下点时:
sleep(5.0)
find_button('#fileUploadDummy').click
我收到此错误:
Failure/Error: find_button('#fileUploadDummy').click
Capybara::ElementNotFound:
我正在观看浏览器打开并在达到此错误之前进展到此点。如何在filepicker模式中单击此按钮?
答案 0 :(得分:1)
我无法使用Capybara-webkit
或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
答案 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。