selenium操作webupload进行文件上传

selenium操作webupload进行文件上传

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

import java.awt.*;
import java.awt.datatransfer.StringSelection;
import java.awt.event.KeyEvent;

public class UploadFileRPA {
    public static void main(String[] args) {
        webuploader("E:\\lspt\\f2ud.jpg"
                ,"d:\\Users\\Pictures\\banner.jpg"
                //,"E:\\lspt\\临时\\2am7.jpg"
                ,"d:\\Users\\Pictures\\view_123.pdf"
                ,"E:\\lspt\\0\\2a4c_1616552975916.jpg"
                ,"d:/Users/Pictures/view_123.pdf"
        );
    }

    public static void webuploader(String... filePaths){
        System.setProperty("webdriver.chrome.driver","C:\\windows\\chromedriver.exe");
        //创建无Chrome无头参数
        ChromeOptions chromeOptions=new ChromeOptions();
        //chromeOptions.addArguments("-headless");
        WebDriver browser = new ChromeDriver(chromeOptions);
        browser.get("http://fex.baidu.com/webuploader/getting-started.html");
        WebElement uploaderWE = browser.findElement(By.xpath("//*[@id=\"picker\"]/div[2]"));
        for (String filePath:filePaths) {
            uploaderWE.click();

            try {
                Thread.sleep(5000);
                //指定文件路径
                StringSelection sel=new StringSelection(filePath);
                //将图片复制到剪切板上
                Toolkit.getDefaultToolkit().getSystemClipboard().setContents(sel, null);

                //新建robot类
                Robot robot=new Robot();
                Thread.sleep(1000);
                //按下回车,释放回车,(可有可无,有:选中文件,无:直接将文件路径复制到搜索框里)
                robot.keyPress(KeyEvent.VK_ENTER);
                robot.keyRelease(KeyEvent.VK_ENTER);
                //按下ctril v,拷贝文件
                robot.keyPress(KeyEvent.VK_CONTROL);
                robot.keyPress(KeyEvent.VK_V);
                //释放ctril v
                robot.keyRelease(KeyEvent.VK_CONTROL);
                robot.keyRelease(KeyEvent.VK_V);
                //按下回车,释放回车,确定
                robot.keyPress(KeyEvent.VK_ENTER);
                robot.keyRelease(KeyEvent.VK_ENTER);
                robot.delay(500);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

注意:文件路径使用反斜杠\进行处理,否则会报错。