Java 在selenium webdriver中,Robot类不在for循环中工作,用于一个接一个地上载文件的代码
我想上传文件一个接一个使用for循环。我正在使用Robot类进行Ctrl+V操作,因为我有一个windows浏览窗口,无法使用Java 在selenium webdriver中,Robot类不在for循环中工作,用于一个接一个地上载文件的代码,java,selenium,selenium-webdriver,cucumber,Java,Selenium,Selenium Webdriver,Cucumber,我想上传文件一个接一个使用for循环。我正在使用Robot类进行Ctrl+V操作,因为我有一个windows浏览窗口,无法使用findelement和sendkeys定位该窗口。 文件上传一次就可以很好地工作,但是对于for循环迭代,随后就不工作了。Ctrl+V操作不在Robot类中执行 我试过给机器人1.延迟(10000)输入之前,但它不起作用。另外driver.switchTo().window(driver.getWindowHandle())不起作用 for (int i = 1; i
findelement
和sendkeys
定位该窗口。
文件上传一次就可以很好地工作,但是对于for循环迭代,随后就不工作了。Ctrl+V操作不在Robot类中执行
我试过给机器人1.延迟(10000)代码>输入之前,但它不起作用。另外driver.switchTo().window(driver.getWindowHandle())代码>不起作用
for (int i = 1; i < 3; i++) {
driver.findElement(By.xpath("//div[@class='filter-item col-xs-12']/input[@id='upload']")).click();
Thread.sleep(2000);
WebElement fileInput = driver.findElement(By.xpath("//*[@id=\"upload-form\"]/table/tbody/tr[9]/td[2]/span"));
fileInput.click();
StringSelection ss = new StringSelection(BusinessUtils.path);
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, null);
//Ctrl+v
Thread.sleep(2000);
Robot robot1 = new Robot();
robot1.keyPress(KeyEvent.VK_CONTROL);
robot1.keyPress(KeyEvent.VK_V);
robot1.keyRelease(KeyEvent.VK_V);
robot1.keyRelease(KeyEvent.VK_CONTROL);
robot1.delay(10000);
robot1.keyPress(KeyEvent.VK_ENTER);
robot1.keyRelease(KeyEvent.VK_ENTER);
Thread.sleep(2000);
driver.findElement(By.id("comment")).sendKeys("GGAT Test");
Thread.sleep(2000);
robot1.keyPress(KeyEvent.VK_TAB);
robot1.keyRelease(KeyEvent.VK_TAB);
robot1.keyPress(KeyEvent.VK_TAB);
robot1.keyRelease(KeyEvent.VK_TAB);
robot1.keyPress(KeyEvent.VK_TAB);
robot1.keyRelease(KeyEvent.VK_TAB);
Thread.sleep(2000);
robot1.keyPress(KeyEvent.VK_ENTER);
robot1.keyRelease(KeyEvent.VK_ENTER);
Thread.sleep(5000);
System.out.println("Upload Started");
}
for(int i=1;i<3;i++){
findElement(By.xpath(“//div[@class='filter-item col-xs-12']]/input[@id='upload']))。单击();
《睡眠》(2000年);
WebElement fileInput=driver.findElement(By.xpath(“/*[@id=\“upload form\”]/table/tbody/tr[9]/td[2]/span”);
fileInput.click();
StringSelection ss=新的StringSelection(BusinessUtils.path);
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss,null);
//Ctrl+v
《睡眠》(2000年);
机器人机器人1=新机器人();
机器人1.按键(KeyEvent.VK_控制);
机器人1.按键(KeyEvent.VK_V);
机器人1.keyerelease(KeyEvent.VK_V);
机器人1。钥匙释放(钥匙事件。VK_控制);
机器人1.延迟(10000);
机器人1.按键(KeyEvent.VK_ENTER);
机器人1.keyerelease(KeyEvent.VK_ENTER);
《睡眠》(2000年);
driver.findElement(By.id(“comment”)).sendKeys(“GGAT测试”);
《睡眠》(2000年);
机器人1.按键(KeyEvent.VK_选项卡);
机器人1.keyerelease(KeyEvent.VK_选项卡);
机器人1.按键(KeyEvent.VK_选项卡);
机器人1.keyerelease(KeyEvent.VK_选项卡);
机器人1.按键(KeyEvent.VK_选项卡);
机器人1.keyerelease(KeyEvent.VK_选项卡);
《睡眠》(2000年);
机器人1.按键(KeyEvent.VK_ENTER);
机器人1.keyerelease(KeyEvent.VK_ENTER);
睡眠(5000);
System.out.println(“已启动上载”);
}
Ctrl+V不起作用,并且没有上载多个文件。可能不是问题所在,但您应该在循环之外创建一个机器人,而不是每次创建一个新的机器人。。。也应该在剪贴板上这样做。看起来总是一样的?为什么不在循环之前设置剪贴板呢?我尝试在机器人之前设置循环,但没有任何区别。我将要更改的剪贴板,因此很可能在循环中。