方式
- 第一种:看前端上传否为input框,如果是则通过选择该元素进行sendKeys(‘filePath’)
- 第二种:不是input框,只能模拟手动选择文件的过程了
具体细节看下面介绍
方式一:input方式
以抖音发布视频为例:
就是通过input框实现,选择元素输入文件路径即可:
// 选择上传的文件 //*[@id="root"]/div/div/div[3]/div/div[1]/div/div[1]/div/label
WebElement fileInput = driver.findElement(By.xpath("//*[@id=\"root\"]/div/div/div[3]/div/div[1]/div/div[1]/div/label/input"));
fileInput.sendKeys(filePath);
执行该程序就能实现自动选择本地文件
但是当上传的不是input该如何实现,这就只能模拟了,如微信视频号
方式二:非input,模拟本地文件选择
Java里有一个Robot类,就是用来实现自动化,模拟认为操作,先简单介绍下:
在Java中,Robot类是java.awt包中的一个类,用于模拟用户操作的输入事件,比如鼠标点击、键盘输入等。通过Robot类,你可以编写程序来控制鼠标和键盘,实现自动化测试、屏幕捕获和用户界面交互等功能。
Robot类的一些核心API包括:
- mouseMove(int x, int y):将鼠标移动到指定的屏幕坐标(x, y)处。
- mousePress(int buttons):按下指定的鼠标按钮,可以使用InputEvent.BUTTON1_MASK、InputEvent.BUTTON2_MASK和InputEvent.BUTTON3_MASK分别表示鼠标的左键、中键和右键。
- mouseRelease(int buttons):释放指定的鼠标按钮。
- keyPress(int keycode):按下指定的键盘按键,可以使用KeyEvent类中定义的常量来表示键盘按键。
- keyRelease(int keycode):释放指定的键盘按键。
- delay(int ms):暂停指定的毫秒数,用于控制动作的执行速度。
这些API可以让你编写程序来模拟用户操作,实现自动化任务。
回到上面的问题,思路是:先选择页面的上传按钮,点击后,用robot粘贴文件路径到文件管理器地址栏,然后回车就能选择你要上传的文件了
如下代码:
第一步,点击上传按钮
WebElement fileInput = driver.findElement(By.xpath("//*[@id=\"container-wrap\"]/div[2]/div/div/div[1]/div[3]/div/div[2]/div[1]/div/div/div/span/div/span/div/div"));
fileInput.click();
第二步,将文件路径复制
// 设置文件路径
StringSelection selection = new StringSelection("F:\\XXX.mp4");
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(selection, null);
第三步,粘贴文件路径,并回车选择该文件
// 使用 Robot 类来模拟按键操作
try {
Robot robot = new Robot();
// 按下 Ctrl + V(粘贴文件路径)
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
TimeUnit.SECONDS.sleep(2);
// 按下 Enter 键
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
} catch (AWTException e) {
e.printStackTrace();
}
通过以上三步就能实现模拟我们收到选择文件上传的过程了
想获取Java自动化发布本地视频到抖音(或类似平台)的源码,可关注公众号:JavaWizardM,回复douyin,即可