2016-05-16 21 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 
相关问题