之前我一直是调用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(); } }