使用 Java Robot API 和 Selenium WebDriver by Java 上传文件的一种解决方案 [英] One solution for File Upload using Java Robot API with Selenium WebDriver by Java

查看:18
本文介绍了使用 Java Robot API 和 Selenium WebDriver by Java 上传文件的一种解决方案的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我看到很多人在使用 Selenium WebDriver 的测试环境中上传文件时遇到问题.我使用 selenium WebDriver 和 java,遇到了同样的问题.我终于找到了解决方案,所以我将其发布在这里希望对其他人有所帮助.

I saw that lots of people have Problems uploading a file in a test Environment with Selenium WebDriver. I use the selenium WebDriver and java, and had the same problem. I finally have found a solution, so i will post it here hoping that it helps someone else.

当我需要在测试中上传文件时,我点击按钮中的 Webdriver 并等待打开"窗口弹出.然后我将路径复制到剪贴板中的文件,然后将其粘贴到打开"窗口中,然后单击输入".这是有效的,因为当打开"窗口弹出时,焦点总是在打开"按钮上.

When i need to upload a file in a test, i click with Webdriver in the button and wait for the window "Open" to pop. And then i copy the path to the file in the clipboard and then paste it in the "open" window and click "Enter". This is working because when the window "open" pops up, the focus is always in the "open" button.

您将需要这些类和方法:

You will need these classes and method:

import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.awt.Toolkit;
import java.awt.datatransfer.StringSelection;


public static void setClipboardData(String string) {
   StringSelection stringSelection = new StringSelection(string);
   Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, null);
}

这就是我在打开打开"窗口后所做的:

And that is what i do, just after opening the "open" window:

setClipboardData("C:\path to file\example.jpg");
//native key strokes for CTRL, V and ENTER keys
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);

就是这样.它对我有用,我希望它对你们中的一些人有用.

And that´s it. It is working for me, i hope it works for some of you.

推荐答案

实际上,对此也有一种内置技术.它应该适用于所有浏览器和操作系统.

Actually, there is an in-built technique for this, too. It should work in all browsers and operating systems.

Selenium 2 (WebDriver) Java 示例:

Selenium 2 (WebDriver) Java example:

// assuming driver is a healthy WebDriver instance
WebElement fileInput = driver.findElement(By.xpath("//input[@type='file']"));
fileInput.sendKeys("C:/path/to/file.jpg");

这个想法是将文件的绝对路径直接发送到一个元素,您通常会点击该元素以获取模式窗口 - 即 <input type='file'/>元素.

The idea is to directly send the absolute path to the file to an element which you would usually click at to get the modal window - that is <input type='file' /> element.

这篇关于使用 Java Robot API 和 Selenium WebDriver by Java 上传文件的一种解决方案的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆