0

我在 Firefox 24 上使用 Java 使用 WebDriver 上传文件时遇到问题。而且我不能使用一些外部程序,如 AutoIT 或类似程序。

我必须将文件上传到 HTML 代码为的部分:

<td>
<input type="file" name="file">
</td>

我在 Eclipse 中使用的是

pageObject.getTypeFileLocation().sendKeys(textFile);
pageObject.getUploadButton.click();

这不起作用;也尝试了这个问题的第一个答案,但也没有成功。

测试返回“OK”,但我怀疑没有做任何事情,所以添加了一个检查以等待“上传完成”文本出现;但是文件没有上传,并且在20秒后超时,即使要上传的文件为5KB,手动上传时只需不到一秒。该input=file部分包含一个按钮和一个“未选择文件”文本,当手动选择文件时,该文本会更改为文件路径;这就是我认为文件没有被上传的想法;因为“未选择文件”一直存在,直到测试失败。

我在 Chrome 上试过这个并且似乎工作正常,而且我知道input=file自 23 版以来在 FF 中有一些返工,但主要指向 CSS 样式,所以我认为它不相关。

另外,这个问题听起来可能有点愚蠢,但问题就是问题:sendKeys()操作不需要字段来输入这些键吗?我觉得 WebDriver 正在尝试在按钮上写入路径,因为它只是一个按钮,所以无法执行该操作。

任何帮助将不胜感激,并在此先感谢!

4

1 回答 1

3

解决了!

不知道它是否适用于所有浏览器,但至少它适用于 FF 和 Chrome:

发现有人使用了 FILE 类型,所以重用它并得到它的绝对路径:

protected File *fileName* = new File("*path to file*");
private String textFile = *fileName*.getAbsolutePath(); 
pageObject.getInput().sendKeys(textFile);

希望别人觉得它有用;因为回答我自己的问题很奇怪。

于 2013-12-12T20:21:12.793 回答