[英]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.