问题是我尝试上传的网页元素有两种使用方式:
拖放,或单击按钮.没有字段输入框.并不是说我没有尝试使用sendKeys.我已经在按钮和所有周围元素上尝试过了.
这个问题的第二部分是我在Windows机器上编写,但自动化发生在Linux机器上.这意味着AutoIt不起作用.这是上传框的HTML.
<div class="up-target" id="up-drop-zone">
<div class="up-drop-zone-pre hidden">
<p>Please choose a folder to upload</p>
</div>
<div class="up-drop-zone-decor">
<p>Drop one or more files here</p>
<p>or</p>
<button name="uploadFile" class="upload">Select Files</button>
<input type="file" id="up-drop-zone-input" name="files[]" multiple="true">
</div>
</div>
我正在使用Java,并对Selenium之外的其他方法开放(但是,我只选择了maven存储库).
谢谢!
解决方法:
不幸的是,你现在不能这样做(2013年1月,Selenium 2.29.1),因为Selenium不支持< input type =“file”multiple>元素.
There is a feature enhancement request由项目开发者自己制作,它还没有实现.您可以在那里加注星标以在优先级列表中向上移动它.
另外,据我所知,您无法以可靠的方式将文件从桌面拖到WebElement.
解决方法可能是使用AutoIT(仅限Windows)或Robot
类(仅适用于与您类似的设置)并在对话框中“盲目地”键入路径:
driver.findElement(By.id("up-drop-zone-input")).click();
Robot r = new Robot();
r.keyPress(KeyEvent.VK_C); // C
r.keyrelease(KeyEvent.VK_C);
r.keyPress(KeyEvent.VK_COLON); // : (colon)
r.keyrelease(KeyEvent.VK_COLON);
r.keyPress(KeyEvent.VK_SLASH); // / (slash)
r.keyrelease(KeyEvent.VK_SLASH);
// etc. for the whole file path
r.keyPress(KeyEvent.VK_ENTER); // confirm by pressing Enter in the end
r.keyrelease(KeyEvent.VK_ENTER);
它很糟糕,但它应该工作.请注意,您可能需要这些:How can I make Robot type a `:`?和Convert String to KeyEvents(此外还有新的和闪亮的KeyEvent#getExtendedKeyCodeForChar()
,它可以完成类似的工作,但只能从JDK7获得).
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。