Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在selenium webdriver中,Robot类不在for循环中工作,用于一个接一个地上载文件的代码_Java_Selenium_Selenium Webdriver_Cucumber - Fatal编程技术网

Java 在selenium webdriver中,Robot类不在for循环中工作,用于一个接一个地上载文件的代码

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

我想上传文件一个接一个使用for循环。我正在使用Robot类进行Ctrl+V操作,因为我有一个windows浏览窗口,无法使用
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不起作用,并且没有上载多个文件。

可能不是问题所在,但您应该在循环之外创建一个机器人,而不是每次创建一个新的机器人。。。也应该在剪贴板上这样做。看起来总是一样的?为什么不在循环之前设置剪贴板呢?我尝试在机器人之前设置循环,但没有任何区别。我将要更改的剪贴板,因此很可能在循环中。