【问题标题】:Robot Class is not working for file upload in IE 11 in Selenium webDriver机器人类不适用于 Selenium webDriver 中 IE 11 中的文件上传
【发布时间】:2017-08-29 17:55:57
【问题描述】:

我正在尝试在 IE11 中使用 java 在 selenium webdriver 中上传文件。下面的代码点击浏览按钮,但它没有输入或粘贴要上传到新打开的窗口的文件名。它只是卡住了,什么也没有发生。也无法调试代码。似乎机器人类没有响应。 我也尝试过发送密钥,但行为不一致。

<input name="ctl00$PlaceHolderMain$UploadDocumentSection$ctl05$InputFile" title="Choose a file" class="ms-fileinput ms-fullWidth" id="ctl00_PlaceHolderMain_UploadDocumentSection_ctl05_InputFile" onfocus="ResetSpFormOnSubmitCalled();" onchange="CheckAssetLibMediaExtension()" type="file" size="35">
                 driver.manage().window().maximize(); WebElement element12 = (new WebDriverWait(driver, 10)).until(ExpectedConditions.elementToBeClickable(Main.newdocument(driver))); Main.newdocument(driver).click(); Thread.sleep(500); element12 = driver.findElement(By.xpath("//iframe[@class='ms-dlgFrame']")); driver.switchTo().frame(element12);

          Thread.sleep(2000);


                WebElement element = driver.findElement(By.xpath("//input[@type='file']"));
                JavascriptExecutor executor = (JavascriptExecutor)driver;
                executor.executeScript("arguments[0].click();", element);


                 Robot robot = new Robot();

                 StringSelection sel = new StringSelection("C:\\Users\\m9kuil\\Desktop\\ImportAttendeeTemplate.xlsx");


                   // Copy to clipboard
                 Toolkit.getDefaultToolkit().getSystemClipboard().setContents(sel,null);

                robot.keyPress(KeyEvent.VK_CONTROL);
                 robot.keyPress(KeyEvent.VK_V);

                // Release CTRL+V
                robot.keyRelease(KeyEvent.VK_V);    
                 robot.keyRelease(KeyEvent.VK_CONTROL);

                //Press Enter 
                 robot.keyPress(KeyEvent.VK_ENTER);
                 robot.keyRelease(KeyEvent.VK_ENTER);
                 robot.delay(1000);

【问题讨论】:

  • 当 sendkeys 不起作用时,您是否看到任何错误/异常?
  • 感谢您调查此问题。它没有显示任何错误/异常,但它被卡住并且不会继续进行。正如 Eknath 所建议的那样,添加 Thread.sleep(10000) 对我有用。
  • 不用担心。不客气。

标签: java selenium-webdriver file-upload awtrobot


【解决方案1】:

在评论//Press Enter之前写robot.delay(10000);尝试一次

没有机器人类的上传文件的其他简单替代方法:

driver.findElement(By.xpath(".//input[@type='file']")).sendKeys("C:\\Users\\m9kuil\\Desktop\\ImportAttendeeTemplate.xlsx");

wait(10000)

【讨论】:

  • 非常感谢!使用发送密钥后添加 10000 的等待时间对我有用。早些时候我尝试使用 2000,因此我猜它的行为不一致
猜你喜欢
  • 1970-01-01
  • 2011-08-02
  • 1970-01-01
  • 1970-01-01
  • 2012-10-15
  • 1970-01-01
  • 1970-01-01
  • 2015-10-20
  • 2015-08-12
相关资源
最近更新 更多