我正在用Java Selemium编写上传文件的自动化测试用例。我的问题是,当我点击上传按钮时,Windows文件上传弹出窗口,我试着使用Robot类在弹出窗口中发送文件路径,但它没有输入任何内容,我想它不能在弹出窗口中设置焦点。尝试使用 driver.switchTo().alert()
也是。
我的代码如下。
List<WebElement> elecount = driver.findElements(By.xpath("//div/img[@title='Insert pictures inline']"));
elecount.get(1).click(); //opens the Windows popup
StringSelection stringSelection = new StringSelection("File path");
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, null);
try{
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);
}
非常感谢
经过一番挣扎,找到了解决的办法,有一个绝对Xpath,可以用来直接发送文件路径进行上传。下面是代码。
File a = new File(System.getProperty("user.dir")+"your absolute path"); /在我的例子中,文件存在于项目目录下。
String absolute = a.getCanonicalPath();
WebElement addfile = driver.findElement(By.xpath("./input[@type='file']")); /这个绝对X路径是用来直接上传文件的,而不需要打开Windows文件上传弹窗。
addfile.sendKeys(absolute).这个绝对X路径是用来直接上传文件的,而不需要打开Windows文件上传弹窗。