使用webdriver上传文件

时间:2014-08-01 07:20:44

标签: testing selenium selenium-webdriver automation automated-tests

我尝试使用代码上传照片

driver.findElement(By.xpath("xpath")).sendKeys("C:\\Users\\path\\ben.jpg");

但图片没有上传。

上传按钮的html是

<button id="upfile1" class="buttonclass" style="cursor: pointer" type="button"> Choose Photo</button>

还有其他方法可以上传图片。我也尝试过使用WebElement。我需要JAVA的解决方案。

4 个答案:

答案 0 :(得分:1)

我能够使用

完成
driver.findElement(By.id("upfile1")).click();
    Thread.sleep(2000);
    StringSelection ss = new StringSelection("C:\\Users\\logo1.jpg");
    Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null);
    Robot robot = new Robot();
    robot.keyPress(KeyEvent.VK_CONTROL);
    robot.keyPress(KeyEvent.VK_V);
    robot.keyRelease(KeyEvent.VK_CONTROL);
    robot.keyRelease(KeyEvent.VK_V);
    robot.keyPress(KeyEvent.VK_ENTER);
    robot.keyRelease(KeyEvent.VK_ENTER);

但除了使用机器人之外,还有其他任何简单方法可以实现吗?

答案 1 :(得分:0)

添加System.Windows.Forms参考并尝试以下代码。

driver.findElement(By.Id("upfile1")).Click();
System.Windows.Forms.SendKeys.SendWait("C:\\Users\\path\\ben.jpg");
System.Windows.Forms.SendKeys.SendWait("{ENTER}");

答案 2 :(得分:0)

出现的弹出窗口是一个窗口。它应该使用AutoIT来处理。

答案 3 :(得分:0)

如果您使用RemoteWebDriver,则需要先使用LocalFileDector将文件上传到远程selenium服务器。然后使用远程路径从远程selenium服务器上传。

driver.setFileDetector(new LocalFileDetector());
driver.findElement(By.xpath("xpath")).sendKeys("C:\\Users\\path\\ben.jpg");