2013-09-26 162 views
-1
WebElement UploadImg = driver.findElement(By.xpath("//*[@id='file_upload_button']")); 
    UploadImg.click(); 
    WebElement frame =driver.switchTo().activeElement(); 
    frame.sendKeys("d:\5.jpg"); 

該代碼只需打開系統窗口,但它並沒有選擇任何照片/文件如何使用「上傳圖片按鈕」上傳文件/圖片中硒的webdriver

+0

嗨。您不能使用硒自動化任何基於Windows的對話框/窗口。 Selenium僅適用於瀏覽器。如果要上傳文件,請使用sendkeys方法鍵入文件的路徑並按下提交按鈕。 – Vinay

+0

@ user2798616您是否在UploadImage按鈕旁邊有一個文本框,用於輸入您要上傳的文件的路徑?如果你有,那麼不需要點擊上傳按鈕。直接使用sendKeys將文件路徑粘貼到該文本框中。 – Hemanth

+0

@Vinay:網站上沒有任何文本框旁邊的UploadImage按鈕進入路徑...!它只是有按鈕,所以我怎麼能發送路徑使用這個按鈕 – Niyati

回答

3

試着改變你的代碼:

WebElement UploadImg = driver.findElement(By.xpath("//*[@id='file_upload_button']")); 
    UploadImg.sendKeys("d:\5.jpg"); 
+0

我已經試過這個,它不工作:( – Niyati

3

Kyop的答案是正確的,儘管爲了實現這個功能,您發現的元素需要採用<input type="file" id="file_upload_button">的形式。您可以發佈相關代碼的HTML代碼段來驗證這一點嗎?

此外,爲什麼使用XPath查找id變得複雜?與僅使用driver.findElement(By.id("file_upload_button"))相比,有什麼好處嗎?

來源:this post

+0

不能,kyop的代碼不起作用,你可以通過鏈接「:http://classifieds.sandhira.com/form/boats-or-ships/post-classified」來檢查,因爲我想用這個上傳圖片上傳圖片按鈕'頁 – Niyati

+0

嘗試;'WebElement UploadImg = driver.findElement(By.id(「file_upload」));'。你需要使用'type =「file」'not'type =「button」'來定位輸入。 –

+0

可以使用上面提到的鏈接,因爲我無法處理這個。 – Niyati

4

運行這段代碼:

JavascriptExecutor js = (JavascriptExecutor) driver; 
js.executeScript("arguments[0].setAttribute('style', arguments[1])",` driver.findElement(By.xpath("//input[@type='file']")), "0"); 
js.executeScript("arguments[0].setAttribute('class', arguments[1])", driver.findElement(By.xpath("//input[@type='file']/../../div[2]")), "a"); 
driver.findElement(By.xpath("//input[@type='file']")).sendKeys("Your Path to the file your system"); 

說明:每個瀏覽按鈕在隱藏狀態在DOM一<input>標籤。通過使用下面的代碼行,我們只需更改包含<input>標籤的標籤的類和樣式屬性,以使其變得可見並且可以對其執行sendKeys()命令。之後,當你做一個sendKeys與你想上傳的圖像/文件的絕對路徑。