2016-08-01 55 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

我想上传不创建文本框的文件。对不起,如果我让你误会 –