如何使用selenium java中的robot类在无头浏览器中上传文件

时间:2017-02-09 06:16:52

标签: java firefox selenium-webdriver headless-browser

如何使用selenium java中的机器人类在无头浏览器中上传文件,因为sendkeys()方法在我的情况下不起作用。我使用firefox和selenium web驱动程序java作为我的脚本

2 个答案:

答案 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}")