2012-05-04 40 views
2

我想使用webdriver自動上傳文件,我的HTML是 它是文件類型。如何使用webdriver自動上傳文件。

使用螢火蟲我得到了id,它是相同的文本框和按鈕。 (「fileupload」))。sendKeys(「code.txt」);使用此命令的

getWebDriverObj()。findElement(By.id(「fileupload」))。我無法取得結果。

確實有人遇到過這種情況,如果有的話,請你幫幫我。

謝謝 Raghuram。

+1

這應該工作。什麼操作系統,瀏覽器(+版本),硒版本和語言(嗯,這是一個愚蠢的問題 - 你的代碼看起來像Java)你使用?網頁上的任何特殊技術堆棧(例如Silverlight,Flash,asp.net等)?當你的代碼運行時會發生什麼,什麼都沒有,或者它拋出異常? javascript'document.getElementById(「fileupload」)。value =「Code.txt」'會做什麼? –

+0

正在使用windows7,browser = firefox(version-11)selenium-standalone-server-2.21.0.jar,language = java。使用Iframe。它沒有拋出任何異常。這與selenium.type命令正常工作。但我想知道如何在webdriver中使用。 – Raghuram

+0

如果您使用Internet Explorer(或任何其他瀏覽器),它是否仍然不工作? –

回答

0

如果以前的方法不起作用 您可以嘗試下一個鏈。 1.通過點擊按鈕調用文件選擇對話框(使用webdriver方法點擊()或javascript「document.getElementById('id')。click()」 2.並將控制權發送給Autoit(或另一個)並且AutoIt將工作使用文件選擇對話框(類型ADDRES到文件,單擊按鈕) 例如:

 var Autoit = new AutoItX3(); 
     const string widowTitle = "File Upload"; 
     Autoit.WinWait(widowTitle, "File &name:", 10); 
     Autoit.ControlSetText(widowTitle, "", "[CLASS:Edit; INSTANCE:1]", pathToFile); 
     Autoit.ControlClick(widowTitle, "", "[CLASS:Button; INSTANCE:1]"); 
     Autoit.WinWaitClose(widowTitle, "File &name:", 10); 

安裝java和AutoIt的http://code.google.com/p/autoitx4java/

0

Autois Windows特定只有

這裏是一個更強大的解決方案:

爲此,您將不得不找到實際的輸入框(在提供的文件的路徑)的「ID」,然後使用以下命令:

driver.findElement(By.id("upload")).sendKeys("/path/to/the/file"); 
driver.findElement(By.id("upload_button")).click(); 

如果您正在使用WebDriverBackedSelenium你可以使用:

selenium.type(「locator」,「/ path/to/the/file」);

selenium.click("upload_button"); 
相關問題