我试图通过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">
答案 0 :(得分:0)
以下代码在C#中为我工作
SendKeys.SendWait(@"D:\filename");
SendKeys.SendWait(@"{Enter}");
在NameSpace中添加"using System.Windows.Forms;"
在参考
"System.Windows.Form"
答案 1 :(得分:0)
您可能会发现这是因为文件的路径无效。请确保:
我发现当我将...引入路径时,此功能默默地停止了工作。