如何使用Java中的Selenium WebDriver上传文件

Mah*_*esh 60 java upload selenium-webdriver

任何人都可以让我知道如何使用Selenium通过Java代码上传文件?

当我点击应用程序中的按钮时,它会在新窗口中打开,我可以使用它来选择上传文件.由Silverlight(C#)开发的浏览按钮.

小智 91

首先确保输入元素可见

如在讨论中指出马克科林在这里:

不要单击浏览按钮,它将触发操作系统级别对话框并有效地停止测试死机.

相反,你可以使用:

driver.findElement(By.id("myUploadElement")).sendKeys("<absolutePathToMyFile>");

myUploadElement是该元素的id(在本例中为button),在sendKeys中,您必须指定要上载的内容的绝对路径(图像,视频等).Selenium将为您完成剩下的工作.

请记住,上传仅适用于您发送文件的元素应该在表单中<input type="file">

  • 您可以使用以下代码获取文件的绝对路径并上传内容`String filePath = System.getProperty("user.dir")+"/ src/res/test.pdf; driver.findElement(By.id(" .elementID"))的SendKeys(文件路径);` (5认同)

小智 11

driver.findElement(By.id("urid")).sendKeys("drive:\\path\\filename.extension");
Run Code Online (Sandbox Code Playgroud)


Zhe*_*eka 10

这是我用来通过上传窗口上传图片的方法:

    //open upload window
    upload.click();

    //put path to your image in a clipboard
    StringSelection ss = new StringSelection("C:\\IMG_3827.JPG");
    Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null);

    //imitate mouse events like ENTER, CTRL+C, CTRL+V
    Robot robot = new Robot();
    robot.keyPress(KeyEvent.VK_ENTER);
    robot.keyRelease(KeyEvent.VK_ENTER);
    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);
Run Code Online (Sandbox Code Playgroud)

DONE