2014-06-26 57 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')) 

上面的代码适合我。