Selenium Webdriver - 单击具有相同ID的多个元素的隐藏元素

时间:2016-08-01 08:37:25

标签: java selenium selenium-webdriver

我正在尝试在项目中自动执行上传文件功能。问题是两个上传按钮使用了相同的ID和名称。

没有任何用户操作会使此元素可见。所以我需要一个解决方法,在元素不可见时点击它。

这是html和我的项目图片的图像:

https

我的代码:

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.selenium.ElementNotVisibleException - 元素不是   目前可见,因此可能无法与之互动。

我尝试过使用JavascriptExecutor。但无法找到确切的语法。

上传图片时出错:

Error auto created textfield

1 个答案:

答案 0 :(得分: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");

或者如果您想在sendKeys元素上file尝试如下: -

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

如果有两个file输入元素具有相同的ID和名称,并且您想要在第二个元素上传文件,请尝试使用findElements并使用index to sendKeys,如下所示: -

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

希望它有所帮助.. :)