如何使用selenium java中的机器人类在无头浏览器中上传文件,因为sendkeys()方法在我的情况下不起作用。我使用firefox和selenium web驱动程序java作为我的脚本
答案 0 :(得分:1)
无需使用Robot类即可使用Selenium Java上传文件。 刚开始时,(1)如果是linux,则将文件上传到/ tmp文件夹中;如果是Windows OS,则将其上传到temp文件夹中,然后,使用下面的代码上传文件
String path = FILE_UPLOAD_PATH;
//(Full path with file name from /tmp folder)
driver.findElement(By.id("FILE_INPUT_ID")).sendKeys(path);
它将上传文件。
注意:如果不需要释放内存,请在上传后从/ tmp文件夹中删除文件。
答案 1 :(得分:0)
public static void setClipboardData(String string) {
StringSelection stringSelection = new StringSelection(string);
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection,null);
}
setClipboardData(path);
//native key strokes for CTRL, V and ENTER keys
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
注意:如果您使用的是无头浏览器,例如chrome或phantomjs,机器人类将控制当前窗口并在其中发送路径。此外,如果您使用autoIT,脚本将等待显示活动窗口。所以很明显脚本会被暂停,它无法找到下一个元素。
AutoIT脚本
WinWaitActive("Open")
Send(@ScriptDir & "\logo.png")
Send("{ENTER}")