簡體   English   中英

使用 sendKeys() 在 Selenium 中上傳文件不起作用

[英]Uploading file in Selenium using sendKeys() is not working

我無法使用sendKeys()上傳文件。 這是我的代碼

driver.findElement(By.xpath(Locators.browseFlagIconBtn)).sendKeys("D:\\Images\\icons.png");

我有一個文件類型的輸入標簽用於文件上傳

<input type="file" id="iconFlagFile" name="iconFile" onchange="setFlagIconFile()" value="" class=" file-input-opacity" style="position: absolute; z-index: 100; font-size: 200px; line-height: 200px; top: 0px; left: 0px; opacity: 0;">

但是,當我單擊此輸入字段所在表單的提交按鈕時,我將被重定向到以下頁面:

在此處輸入圖像描述

此問題的原因:

當我使用sendKeys()傳遞路徑時,它會正確選擇需要上傳的文件。 但是,實際的上傳發生在用戶單擊提交按鈕時。 現在我不知道為什么它會搜索它在 Chrome 目錄中選擇的文件,例如: "C:\Program Files (x86)\Google\Chrome\Application\53.0.2785.116"

顯然它將無法找到該文件。

問題:如何解決這個問題? 如果我需要提供更多信息,請告訴我。

請嘗試以下 javascript 執行程序代碼

String filePath = "D:\\Images\\icons.png";
JavascriptExecutor jsx = (JavascriptExecutor) driver;
jsx.executeScript("document.getElementById('iconFlagFile').value='" + filePath + "';");

根據您的解釋,我假設您有一個 HTML 標簽,可讓您從本地驅動器上傳文件,但未啟用。 除非您點擊提交按鈕,否則它不會允許您上傳文件。

在這種情況下,嘗試編輯表單標簽進行編輯,然后嘗試調用 sendKeys() 方法,您可以使用 javascript 執行器編輯 html 元素

請嘗試此文件上傳。

    String filename = "path of the file";
    File file = new File(filename);
    String path = file.getAbsolutePath();
    // give the URL to upload
    driver.findElement(By locator).sendKeys(path);

使用剪貼板類和機器人類組合

    Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
    StringSelection str = new StringSelection("File Path");
    clipboard.setContents(str, null);

    WebElement element = driver.findElement(By.xpath("elementXpath"));
    element.click();

    Robot robot = new Robot();
    robot.keyPress(KeyEvent.VK_CONTROL);
    robot.keyPress(KeyEvent.VK_V);
    driverwait(1);
    robot.keyRelease(KeyEvent.VK_CONTROL);
    robot.keyRelease(KeyEvent.VK_V);
    driverwait(1);
    robot.keyPress(KeyEvent.VK_ENTER);
    robot.keyRelease(KeyEvent.VK_ENTER);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM