我正在尝试在我的项目中自动执行上传文件功能。问题是两个上传按钮使用相同的 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.selenium.ElementNotVisibleException - Element is not currently visible and so may not be interacted with.
我尝试过使用JavascriptExecutor
。但无法找到确切的语法。
上传图片时出错:
最佳答案
如果要将隐藏
框转换为可见文本
框,您应该使用.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");
或者,如果您想在 file
元素上sendKeys
,请尝试如下:-
WebElement fileInput = driver.findElement(By.id("indexPic"));
fileInput.sendKeys("E:\\testUploadPromotion\\16.jpg");
如果有两个 file
输入元素具有相同的 id 和名称,并且您想在第二个元素上上传文件,请尝试使用 findElements
并使用索引来发送Keys,如下所示:-
List<WebElement> fileInputs = driver.findElements(By.id("indexPic"));
fileInputs.get(1).sendKeys("E:\\testUploadPromotion\\16.jpg");
希望有帮助..:)
关于java - Selenium Webdriver - 单击具有相同 ID 的多个元素的隐藏元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38694362/