如何在selenium中的单个语句上传多个文件?

时间:2015-09-18 14:25:20

标签: file selenium

执行程序时,我没有收到任何警告或错误消息。

wd.findElement(By.xpath("XPATH")).sendKeys("ABC.jpg","XYZ.jpg");

但是没有文件正在上传。

wd.findElement(By.xpath("XPATH")).sendKeys("can we make CTRL+A operation" );

提前致谢。

2 个答案:

答案 0 :(得分:1)

我认为你可能会在Selenium"上传文件上传#34;事情错了,这就是我要解决的问题。

This article by SauceLabs介绍了在Java和Ruby中通过Selenium处理文件上传的基本步骤。假设您正在使用Java,那么您需要执行以下几个步骤:

  • FileDetector
  • 设置WebDriver方法
  • 获取WebElement指向input类型的有效HTML file标记
  • 在文件的路径中输入Selenium(不确定这是否需要绝对路径,但它可能是一个好主意)
  • 提交表格

以下代码清单演示了如何执行以下每个步骤:

wd.setFileDetector(new LocalFileDetector());
// point your webdriver to the page containing the upload form.
WebElement upload = wd.findElement(By.xpath("XPATH")); // TODO replace xpath!
upload.sendKeys("/path/to/ABC.jpg");
upload.submit(); // NOTE: Submits the form *containing* the upload field!

因为您已将文件检测方法设置为LocalFileDetection,所以Selenium将能够找到相应的文件。如果未设置,则Selenium默认为UselessFileDetection实现,每次都会失败,以避免意外上传文件。

警告:如果您正在使用基于Javascript或Flash的多文件上传系统,那么这可能不会起作用,因为这些通常会绕过原始输入字段或独立于表格处理上传#39提交。

答案 1 :(得分:0)

您没有收到错误,因为sendKeys() accepts an array of CharSequence objects。并且你符合那个方法合同

  

但没有上传文件

这是因为现在编写代码的方式实际上会发送文本:ABC.jpgXYZ.jpg