使用Webdriver上传文件:sendKeys()后没有任何反应

时间:2017-05-13 10:17:50

标签: javascript java html selenium

我试图通过Selenium Webdriver自动上传文件。

我已经在stackoverflow上阅读了很多有关此主题的问题并使用了那里提供的所有提示,而我的代码实际上正在测试页面上工作:https://demo.vaadin.com/sampler/#ui/data-input/other/upload

但是我不能让它在我的真实项目上工作。 首先 - 我的输入字段是不可见的,所以我用:

显示它
js.executeScript("arguments[0].setAttribute('style', arguments[1])",element, "opacity:100; width:50px");

我证实该领域确实变得可见。 比我通过sendKeys()方法发送文件的绝对路径:

Path path = Paths.get(value);
Path absolutePath = path.toAbsolutePath();
sendKeys(absolutePath.toString());

但是当我尝试检查该字段的值时:

String v=elem.getAttribute("value");

它总是空的。

我试图向文件发送错误的路径,这段代码给了我一个错误 - 不是绝对路径,所以它确实试图将某些内容发送到输入字段。

我认为它与测试下的网页代码有关,但我没有足够的知识来分配问题。

输入元素的HTML代码如下:

<input type="file" data-bind="attr: {id: uid, name: inputName, multiple: isMultipleFiles}, disable: disabled, afterRender: onElementRender">

2 个答案:

答案 0 :(得分:0)

以下代码在C#中为我工作

SendKeys.SendWait(@"D:\filename");

SendKeys.SendWait(@"{Enter}");

在NameSpace中添加"using System.Windows.Forms;" 在参考

中添加"System.Windows.Form"

答案 1 :(得分:0)

您可能会发现这是因为文件的路径无效。请确保:

  • 路径正确
  • 该文件存在且可读
  • 路径已满且不相对
  • 路径绝对(不包含..)
  • 你的斜线正朝着操作系统的正确方向发展(有些浏览器在乎,有些人不在乎)

我发现当我将...引入路径时,此功能默默地停止了工作。