【问题标题】:How to handle Firefox Upload File window with Selenium WebDriver - Java如何使用 Selenium WebDriver 处理 Firefox 上传文件窗口 - Java
【发布时间】:2017-11-24 11:31:10
【问题描述】:

我知道这个主题是重复的,但是我也应用了其他解决方案,结果我在将正确的密钥发送到文件上传窗口的正确位置时遇到了问题。

我已经使用这段代码打开并发送密钥到上传文件:

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

【问题讨论】:

    标签: java selenium selenium-webdriver file-upload selenium-firefoxdriver


    【解决方案1】:

    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);
    

    【讨论】:

    • 这是按钮,我们正在谈论,我正在尝试通过它发送密钥,当您单击或尝试发送密钥时,Firefox 的 FileUpload 窗口将打开。 ''
    • 您无法在此按钮上发送密钥。使用 Robot 类上传文件。
    • 使用机器人类上传文件的功能更新了答案。
    • 例如我的文件,在桌面上,路径是这样的:C:\Users\Evrenos-SuperCareer\Desktop\file.pdf,我应该如何将路径写入字符串的“path_to_file”选择? (对不起,我对这件事很陌生,可能这是一个愚蠢的问题)
    • 您可以通过提供此路径在打开的窗口上手动尝试。如果它被接受并且文件被上传,它也会被 selenium 接受
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-07
    • 2021-07-12
    • 1970-01-01
    • 2012-06-30
    • 1970-01-01
    相关资源
    最近更新 更多