[英]How to upload multiple files/images using Robot class in selenium Webdriver? (windows) Now want to upload 2nd Image? Please help me to Reuses samecode
[英]How to upload multiple files using Robot class in selenium Webdriver (Mac)?
我正在尝试使用 Robot 类在 selenium webdriver 中上传文件,并且我正在使用 Mac 机器。 发送密钥不起作用。 下面是代码,当我第一次加载文件时它工作正常。 我正在尝试再次从同一页面上传另一个文件,但由于小程序已打开,因此未选择任何文件且脚本失败
browse.click(); // Click on a browse button from the page
File file = new File(photoLocation); //send path of the file
StringSelection StringSelection = new StringSelection(file.getAbsolutePath());
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(StringSelection, null); //Copies the filepath to clipboard
robot = new Robot();
//This launches java applet, so we are using cmd+tab to shift the focus
robot.keyPress(KeyEvent.VK_META);
robot.keyPress(KeyEvent.VK_TAB);
robot.keyRelease(KeyEvent.VK_META);
robot.keyRelease(KeyEvent.VK_TAB);
robot.delay(500);
//Open Goto window
robot.keyPress(KeyEvent.VK_META);
robot.keyPress(KeyEvent.VK_SHIFT);
robot.keyPress(KeyEvent.VK_G);
robot.keyRelease(KeyEvent.VK_META);
robot.keyRelease(KeyEvent.VK_SHIFT);
robot.keyRelease(KeyEvent.VK_G);
//Paste the clipboard value
robot.keyPress(KeyEvent.VK_META);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_META);
robot.keyRelease(KeyEvent.VK_V);
//Press Enter key to close the Goto window and Upload window
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
robot.delay(500);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
我正在使用相同的代码从主页再次调用以上传第二个文件。 但是由于java小程序仍然打开,我无法上传文件。 有没有办法让我关闭小程序?
我已经很努力地做到了这一点。 我终于找到了。 我没有使用 cmd+tab 按钮移动焦点,而是使用了它:
driver.switchTo().window(driver.getWindowHandle());
然后,按 CMD+SHIFT+G。 另外,我在粘贴路径后不久添加了延迟。
StringSelection StringSelection = new StringSelection(file.getAbsolutePath());
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(StringSelection, null);
driver.switchTo().window(driver.getWindowHandle());
Robot robot = new Robot();
//Open Goto window
robot.keyPress(KeyEvent.VK_META);
robot.keyPress(KeyEvent.VK_SHIFT);
robot.keyPress(KeyEvent.VK_G);
robot.keyRelease(KeyEvent.VK_META);
robot.keyRelease(KeyEvent.VK_SHIFT);
robot.keyRelease(KeyEvent.VK_G);
//Paste the clipboard value
robot.keyPress(KeyEvent.VK_META);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_META);
robot.keyRelease(KeyEvent.VK_V);
//Press Enter key to close the Goto window and Upload window
robot.delay(1000);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
robot.delay(1000);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
我希望这可以帮助 Mac 用户上传文件。
我尝试循环上传和下载多个文件-
File folder = new File("D:\\Test\\Documents");
File[] files = folder.listFiles();
String filesList = "";
for(int i = 0; i < files.length; i++){
filesList += (i != 0? "\n":"") + files[i].getAbsolutePath();
StringSelection sel = new StringSelection(filesList);
------------------------------------------------------------------------
但在输出第一个文件总是上传多次并且文件读取正确。
这两个动作都执行了两次,因为动作不同。
您正在按元键(Window 键),然后按 Tab 键。 到达所需的窗口后,您将同时释放它们以进入该特定页面,就像我们在Alt + Tab 中所做的那样。
这就是为什么这两个动作都执行两次的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.