我知道这个主题是重复的,但是,我也应用了其他解决方案,因此我在将正确的密钥发送到文件上传窗口的正确位置时遇到问题。
我使用这段代码打开并发送密钥来上传文件:
WebElement fileInput = driver.findElement(By.id("upload-resume-button"));
fileInput.sendKeys("C:/Users/EvrenosCareer/Desktop/filename.pdf");
通过发送密钥,正确的按钮将被激活,文件上传窗口将按预期打开,但密钥是作为其他内容发送的,并且它出现在浏览器的左下角;不是文件上传窗口。请查看此链接,5 秒视频,准确了解我在说什么:https://evrenos-hotmail.tinytake.com/sf/MTcxNDY0N181Njg2OTY1
如果元素的类型是“文件”,您可以直接执行 fileInput.sendKeys("C:/Users/EvrenosCareer/Desktop/filename.pdf"),否则您必须使用 Robot 类上传文件。您不必单击 fileInput 即可发送该元素上的密钥。
通过Robot类上传文件:
WebElement element = driver.findElement(By.id("upload-resume-button"));
element.click();
StringSelection stringSelection = new StringSelection("path to File");
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(stringSelection, null);
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
我上传sendkeys时,它给出了文件未找到,对于roboto类,它给出了org.openqa.selenium.InvalidArgumentException:无法单击元素