我想上传文件,上传按钮的代码如下:
<button class="panel-box-header__controls-bttn bttn-icon js-doc-upload" type="button">
<svg class="icon icon-clip">
<use xlink:href="#icon-clip"></use>
</svg>
</button>
方法driver.findElement(By.xpath("...")).sendKeys("path of the file which u want to upload");
在这里不起作用
Method Robot也不起作用:
public void upload() throws Exception {
uploadButton.click();
Thread.sleep(2000);
//File Need to be imported
File file = new File("/Users/admin/Desktop/test_image.jpg");
StringSelection stringSelection= new StringSelection(file.getAbsolutePath());
//Copy to clipboard
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, null);
Robot robot = new Robot();
// Cmd + Tab is needed since it launches a Java app and the browser looses focus
robot.keyPress(KeyEvent.VK_META);
robot.keyPress(KeyEvent.VK_TAB);
robot.keyRelease(KeyEvent.VK_META);
robot.keyRelease(KeyEvent.VK_TAB);
robot.delay(500);
//Open Goto window
robot.keyPress(KeyEvent.VK_META);
robot.keyPress(KeyEvent.VK_SHIFT);
robot.keyPress(KeyEvent.VK_G);
robot.keyRelease(KeyEvent.VK_META);
robot.keyRelease(KeyEvent.VK_SHIFT);
robot.keyRelease(KeyEvent.VK_G);
//Paste the clipboard value
robot.keyPress(KeyEvent.VK_META);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_META);
robot.keyRelease(KeyEvent.VK_V);
//Press Enter key to close the Goto window and Upload window
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
robot.delay(500);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
}
&#13;
当我使用上面示例中的Robot方法时,单击上传按钮,然后打开一个包含文件的窗口,不再发生任何事情,指定的文件不会上传。
也许某人有解决这个问题的方法?使用机器人方法或任何其他选项
答案 0 :(得分:1)
您不能.sendKeys()
使用按钮或svg元素。两者都不是为了接受输入而设计的。
当网站使用标准.sendKeys()
输入进行上传时,<input type="file />
方法有效。
您需要使用Robot或其他方法点击按钮并选择要上传的文件。