Selenium调用Robot上传图片

本文介绍了一种使用Java的Robot类实现百度搜索页面中图片自动上传的方法,避免了额外安装AutoIT的需求。通过Selenium WebDriver定位元素并模拟点击操作,配合Robot类完成文件路径的复制粘贴及确认上传。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前我一直是调用AotuIT上传图片,

但是我感觉那个太麻烦了,

还要另外安装AotuIT,

现在使用JDK自带的Robot类。

打开百度首页:


点击相机图标:


再点击本地上传图片:



import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebElement;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

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

public class Baidu_1 {
    @BeforeMethod
    public void beforeMethod() throws InterruptedException {
        Read.openBaidu();
        //打开百度首页
    }

    @Test
    public void login() throws InterruptedException, AWTException {
        Read.driver.findElement
                (By.xpath(".//*[@id='form']/span[1]/span")).click();
        //点击相机图标
        Thread.sleep(1000);
        WebElement element = Read.driver.findElement
                (By.xpath(".//*[@id='form']/div/div[2]/div[2]/input"));
        ((JavascriptExecutor) Read.driver).executeScript
                ("arguments[0].click();", element);
        //模拟JS点击本地上传图片
        Thread.sleep(1000);

        String path = System.getProperty("user.dir") + 
                "\\src\\main\\resources\\timg.jpg";
        StringSelection stringSelection = new StringSelection(path);
        //指定图片的路径,使用相对路径
        Toolkit.getDefaultToolkit().getSystemClipboard()
                .setContents(stringSelection, null);
        //把图片路径复制粘贴到剪切板

        Robot robot = new Robot();
        robot.keyPress(KeyEvent.VK_ENTER);
        //按下Enter键
        robot.keyRelease(KeyEvent.VK_ENTER);
        //释放Enter键

        robot.keyPress(KeyEvent.VK_CONTROL);
        robot.keyPress(KeyEvent.VK_V);
        //按下Ctrl+V
        robot.keyRelease(KeyEvent.VK_CONTROL);
        robot.keyRelease(KeyEvent.VK_V);
        //释放Ctrl+V

        robot.keyPress(KeyEvent.VK_ENTER);
        //再次点击Enter键
        robot.keyRelease(KeyEvent.VK_ENTER);
        //再次释放Enter键

        Thread.sleep(5000);
    }

    @AfterMethod
    public void afterMethod() {
        Read.quit();
    }
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值