2016-05-16 56 views
1

所以我碰到了一些障礙。我試圖自動化一個測試用例,我需要將多個文件傳遞給輸入節點,但我無法弄清楚如何執行此操作。我可以使用Mechanize或Watir,但是在自動化中似乎相對主要的主題上找到的信息非常少。在下面的代碼片段中,我將Ruby與Watir一起使用。我遇到的主要問題是,看起來當選擇多個文件時,輸入節點不再可見。輸入節點確實接受多個文件,並且傳入單個路徑會導致成功上載,如此。用Watir將多個文件傳遞給輸入節點(使用Ruby)

path1 = "/path/to/file.json" 
file_field.set path1 

我認爲,在經過多個文件將作爲傳遞與某種分隔符分隔的多個路徑字符串一樣簡單。然而,我並不是特別精通網絡開發,並且正在努力掌握我應該開始的地方。當我嘗試在多個文件中通過像這樣:

multiple_paths = ("/path/to/file1.json"; "/path/to/file2.json") 
file_field.set multiple_paths 

它給上傳的第二個文件,但不是第一個(讓我覺得也許它上傳他們的順序,第二個是覆蓋)。

你認爲這甚至可以使用Watir?我知道Chrome有一個解決方法,使用\ n作爲分隔符上傳多個文件,Firefox是否有類似的解決方法?

+0

FWIW:肯定看起來像'的FileField#set'expects的單一路徑作爲參數:https://github.com/watir/watir-webdriver/blob/master/lib/watir-webdriver/elements/file_field .rb – orde

+0

它的確如此。我最終只是實施了Chrome解決方案。從本質上講,你可以將它傳遞給一個由路徑分隔的字符串換行符,它會將多個文件上傳到輸入節點。 –

回答

1

目前似乎沒有解決Firefox的問題。如果有人知道一個,請張貼答案,因爲我找不到任何地方的解決方案。我想我會在這裏發佈Chrome的解決方案,因爲資源稀缺。

如果需要測試多個文件上傳,有一個特定實例加載驅動程序的Chrome使用:

@browser = Watir::Browser.new :chrome, :prefs => profile 

然後你會想將它傳遞一個字符串,它看起來是這樣的:

paths = "path/to/first/file.json\npath/to/second/file.json\n...etc 
file_field.send_keys paths 
相關問題