2014-06-26 58 views
10

我使用Chrome驅動程序使用nightwatch.js來運行前端測試。我需要測試該圖像上傳工作是否正常,大概是通過提供的文件輸入,因爲有成功的帖子上運行的回調。使用Nightwatch.js上傳圖片文件

我知道這可以使用Selenium Web Driver的sendKeys方法完成。

如何使用javascript和nightwatch.js完成此操作? 你可以訪問Selenium webdriver或者它的一個接口嗎?

+0

我很想看看如何選擇一個文件,我不認爲這樣的事情是可能的。 – dandavis

回答

7

使用此從本地桌面

.setValue('input[type="file"]', require('path').resolve('/home/My-PC/Desktop/img.png')) 
1

使用client.setValue函數來設置圖像的絕對路徑。這是我的項目中的工作示例。 ('#editPictures .modal-body input [type =「file」]','/Users/testing/pictures/CAM00003.jpg');

2

正如上面的人所提到的,您可以將絕對路徑傳遞給您的輸入[type =「file」],就像您在文本字段中輸入文本一樣。

這使用夜間的setValue功能。您可以使用節點的__dirname全局變量檢索當前目錄路徑。

例如: .setValue('#upload-input', __dirname + '\\upload.jpg')

+0

你能詳細說明爲什麼你在''__dirname'''之後放置了雙反斜槓嗎?乾杯 – GrayedFox

+1

@grayedfox:反斜槓是在特殊字符前面的轉義字符。在這個例子中,你用一個反斜槓(我們想要使用的特殊字符)轉義(表示以下字符的轉義字符應該從字面上解釋)。 – lacy

1

上傳圖片在我的情況下,有一個id =「上傳圖標」一個div它具有輸入類型=「文件「

.setValue('//div[@id="Upload Icon"]/input[@type="file"]', require('path').resolve(__dirname + '/categoryIcon.png')) 

上面的代碼適合我。