2016-10-17 3 views
0

Ich versuche, eine Dropzone Capybara Test mehrere Male aufrufen. Wenn ich es jedoch ein zweites Mal anrufe, wurde die ID bereits verwendet. Ich versuche, die ID zu randomisieren, damit sie mehrfach ausgeführt werden kann.Refactor Capybara Javascript DropZone Test

def drop_in_dropzone(file_path) 
    page.execute_script <<-JS 
    fakeFileInput = window.$('<input/>').attr(
     {id: 'fakeFileInput', type:'file'} 
    ).appendTo('body'); 
    JS 
    attach_file("fakeFileInput", file_path) 
    page.execute_script("var fileList = [fakeFileInput.get(0).files[0]]") 
    page.execute_script <<-JS 
    var e = jQuery.Event('drop', { dataTransfer : { files : [fakeFileInput.get(0).files[0]] } }); 
    $('.dropzone')[0].dropzone.listeners[0].events.drop(e); 
    JS 
end 

Fehler beim zweiten Aufruf.

Failure/Error: attach_file("fakeFileInput", file_path) 

Capybara::Ambiguous: 
Ambiguous match, found 2 elements matching file field "fakeFileInput" 

Antwort

0

können Sie auf jeden Fall erzeugen nur eine zufällige ID-Nummer für die Eingabe, aber es könnte leichter sein, nur die fakeFileInput es zu schaffen, wenn nicht bereits vorhanden ist. Dies würde nur funktionieren, wenn Sie die Eingabe nicht für andere Zwecke als in dieser Methode verwenden, aber es scheint, als ob Sie das tun.

Wenn es bereits existierte, würde es nicht wieder erstellt werden und es würde nur wiederverwendet werden

Verwandte Themen