如何使用WebdriverIO上传文件

我试图从WebdriverIO中将以下代码从selenium-webdriver gem移植到Node.js中:

@webdriver.navigate.to "https://imgur.com/upload" element = @webdriver.find_element(:id, 'global-files-button') element.send_keys("C:\\test\\image.png") 

正如你所看到的代码非常简单:导航到一个URL,findinput,设置文件path,并按预期工作selectfile upload。

这是我移植的版本:

 describe('User can upload', () => { it('select file', () => { browser.url("https://imgur.com/upload"); browser.waitForExist('#global-files-button'); $('#global-files-button').keys("C : \\ test \\ image . png".split(" ")); }); }); 

不幸的是,这个testing没有设置path,我一直无法find一个像这样用wdio上传文件的工作示例,文档让我猜测。 任何build议非常感谢。

我知道都select文件和uploadFile,但我正在与云平台运行我的wdiotesting,他们似乎并不可靠的工作。

       

网上收集的解决方案 "如何使用WebdriverIO上传文件"

我遇到了这个问题 从我研究过的不是WebdriverIO的问题,或者它是chooseFile()或uploadFile()方法。 我相信这个问题的根源在于Selenium Webdriver无法处理'multiple' <input type='file' multiple> file'multiple <input type='file' multiple>上传元素的错误。

我在这个github问题上碰到了这个问题,可能需要3天时间: https : //github.com/SeleniumHQ/selenium-google-code-issue-archive/issues/2239

长话短说,因为imgur上的HTML具有“多重”属性,您的上传testing将无法正常工作。 WebdriverIO /selenium只是停止运作,我注意到了。

注意:在testing<input type='file' multiple>我已经能够实际上将我的应用程序上传到单个文件并将文件添加到我的系统和应用程序中。 但问题是,WebdriverIO和Selenium只是停止。 testing结束,没有报告任何成功或失败的结果。

如果你去testing另外一个<input type=file>元素,那么你应该能够正确地从WebdriverIO函数中调用chooseFile()方法。

我希望这可以帮助你,也许还有谁正在努力上传文件。

编辑:我试图让你的例子工作,我已经成功与“chooseFile()”,并直接将“文件path”传递给它。 也许你正在尝试发送键盘命令,当你不需要? 你有试图上传的图像的直接文件path? 以下是我能够用来成功上传文件。

 it('upload a file to imgur', function () { browser.url("https://imgur.com/upload"); browser.waitForExist('#global-files-button'); browser.chooseFile('#global-files-button', '/insert/path/to/image.png') }) 
 // c:/test/image.png var test1 = 'c:/test/image.png' var path = test1.split('/').join('\\\\') browser.addValue('[name="fileField"]', path ) 

或者也可以这样工作

 // c:\test\image.png var path = 'c:\\test\\image.png' browser.addValue('[name="fileField"]', path ) 

或者也许这个

 // c:/test/image.png var path = 'c:/test/image.png' browser.addValue('[name="fileField"]', path )