我无法使用机器人类和sendkeys上传文件。
以下是我尝试的代码
package garbage;
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.io.IOException;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
public class imageupload {
static WebDriver driver;
static String baseURL="http://elance.wetwaresoft.com/account/register";
public static void main(String[] args) throws AWTException, InterruptedException, IOException
{
driver=new FirefoxDriver();
driver.get(baseURL);
WebElement btn=driver.findElement(By.xpath("//*[@class='fileupload-new']"));
btn.click();
System.out.println("Going in Robot class");
Runtime.getRuntime().exec("notepad");
Robot r=new Robot();
r.delay(1000);
r.keyPress(KeyEvent.VK_ENTER);
r.keyPress(KeyEvent.VK_D);
r.keyPress(KeyEvent.VK_SHIFT);
r.keyPress(KeyEvent.VK_SEMICOLON);
r.keyRelease(KeyEvent.VK_SHIFT);
r.keyPress(KeyEvent.VK_BACK_SLASH);
r.keyPress(KeyEvent.VK_A);
r.keyPress(KeyEvent.VK_DOWN);
r.keyPress(KeyEvent.VK_ENTER);
System.out.println("File uploaded");
}
}
当我在记事本中执行我的机器人类代码时,它会键入路径,但是当我在窗口弹出窗口中执行此操作时,它不会输入任何内容。
如何使用robot和sendkeys上传文件?
答案 0 :(得分:1)
我使用 Robot 将文件upalod逻辑分离为单独的类,并使方法成为静态。在方法fileAttachmentUsingRobot
中将路径传递给您想要上传的图像,即图像的完整系统路径。
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.awt.*;
import java.awt.datatransfer.StringSelection;
import java.awt.event.KeyEvent;
/**
* Created by ypolshchykau on 30.01.2015.
*/
public class FileAttacherRobotImplementation {
public final static Logger log = LoggerFactory.getLogger(FileAttacherRobotImplementation.class);
/**
* this method implements file attachment using Robot mechanism
*
* @param filePathToImage
*/
public static void fileAttachmentUsingRobot(String filePathToImage) {
Robot robot = null;
try {
robot = new Robot();
} catch (AWTException e) {
e.printStackTrace();
}
setClipboardData(filePathToImage);
robot.delay(1000);
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);
}
/**
* method for copying file in order to attach file in File open window
*
* @param str
*/
public static void setClipboardData(String str) {
StringSelection stringSelection = new StringSelection(str);
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, null);
}
}
希望这会对你有所帮助。