我正在尝试使用Robot类在selenium webdriver上传文件,我正在使用Mac机器。发送密钥不起作用。下面是代码,它在我第一次加载文件时工作正常。我正在尝试再次从同一页面上传另一个文件,但由于applet已打开,因此没有选择任何文件且脚本失败
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 applet仍处于打开状态,我无法上传该文件。我有办法关闭小程序吗?
答案 0 :(得分:1)
我努力做到这一点。我终于找到了。我没有使用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用户上传文件。
答案 1 :(得分:0)
为什么我们每次放两次东西: -
robot.keyPress(KeyEvent.VK_META);
robot.keyPress(KeyEvent.VK_TAB);
robot.keyRelease(KeyEvent.VK_META);
robot.keyRelease(KeyEvent.VK_TAB);
答案 2 :(得分:0)
由于动作不同,两个动作均执行两次。
您正在按meta键(Window键),然后按Tab键。到达所需的窗口后,您将释放它们两者以进入该特定页面,就像我们在 Alt + Tab 中所做的一样。
这就是为什么两个动作都执行两次的原因。