2016-08-01 56 views
1

我想在我的項目中自動上傳文件功能。問題是兩個上傳按鈕使用相同的ID和名稱。Selenium Webdriver - 點擊隱藏的元素上的多個元素相同的ID

沒有任何用戶操作會使此元素可見。所以我需要一個解決方法來點擊元素,而不可見。

這裏的HTML的圖像和我的項目知情同意:我捕捉異常

WebElement fileInput = driver.findElement(By.name("indexPicName")); 
String js = "arguments[0].style.height='auto'; arguments[0].type='visible';"; 
((JavascriptExecutor) driver).executeScript(js, fileInput); 
fileInput.sendKeys("E:\\testUploadPromotion\\16.jpg"); 

-

org.openqa:

https

我的代碼。 selenium.ElementNotVisibleException - 元素不是 當前可見,所以ma你不會與之互動。

我試過使用JavascriptExecutor。但無法找到確切的語法。

上,而上傳圖片Error:

Error auto created textfield

回答

0

如果你想hidden框轉換爲可見text中,您應該如下使用.setAttribute('type', 'text'): -

WebElement fileInput = driver.findElement(By.id("indexPicName")); 
String js = "arguments[0].setAttribute('type', 'text');return arguments[0]"; 
fileInput = (WebElement)((JavascriptExecutor) driver).executeScript(js, fileInput); 
fileInput.sendKeys("E:\\testUploadPromotion\\16.jpg"); 

或者,如果你想到sendKeysfile元素嘗試如下: -

WebElement fileInput = driver.findElement(By.id("indexPic")); 
fileInput.sendKeys("E:\\testUploadPromotion\\16.jpg"); 

如果存在具有相同的ID和名稱的兩個file輸入元素和你要上傳的第二元素文件嘗試使用findElements並使用索引來如下的SendKeys: -

List<WebElement> fileInputs = driver.findElements(By.id("indexPic")); 
    fileInputs.get(1).sendKeys("E:\\testUploadPromotion\\16.jpg"); 

希望它能幫助。 。:)

+0

嗨,我想實現你的代碼。但它似乎不工作上傳文件,並自動創建一個文本字段。 –

+0

@thronewax它只會將隱藏的文本字段轉換爲可見的文本字段。我只是給你如何使它可見...你想要什麼實際上..? –

+0

我想上傳不創建文本框的文件。對不起,如果我讓你誤會 –