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

标签 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 - Element is not currently visible and so may not be interacted with.

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

上传图片时出错:

Error auto created textfield

最佳答案

如果要将隐藏框转换为可见文本框,您应该使用.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/

相关文章:

java - 无法从类外部访问方法

java - Spring Boot 1.2.5.RELEASE @Transaction

Java 套接字 - 需要帮助更好地理解它们

c# - 如何将 Safari 与 Selenium 2.0 一起使用?

python - 如何使用 Selenium 和 Python 从通过 xpath 找到的 webdriver 元素中提取文本

java - 45000 毫秒后无法连接到端口 7055 上的主机 127.0.0.1。使用 FF 版本 26.0 和 selenium 独立 jar 2.39

java - 在最后两行不相同的每一行上写0's and 1'

java - 将 jar 文件中的目录保存到用户磁盘

ruby - 使用 Selenium 和 Ruby 将键盘快捷键发送到 chrome

javascript - Selenium 和 Angularjs 等待执行一些操作