如何在 Selenium WebDriver 中与隐藏元素交互?


我们可以与 Selenium WebDriver 中的隐藏元素进行交互。隐藏元素是指存在于 DOM 中但在页面上不可见的元素。大多数情况下,隐藏元素由 CSS 属性 **style="display:none;"** 定义。如果元素是表单标签的一部分,可以通过将属性 type 的值设置为 **hidden** 来隐藏它。

Selenium 默认情况下无法处理隐藏元素,并在使用它们时抛出 **ElementNotVisibleException** 异常。Javascript Executor 用于处理页面上的隐藏元素。Selenium 使用 executeScript 方法运行 Javascript 命令。要运行的命令作为参数传递给该方法。

首先,可以使用 **getElementById** 方法识别元素。接下来,要向字段输入文本,可以使用 **value** 方法将值设置到字段。

语法

executor.executeScript
("document.getElementById('txt').value='Selenium'");

让我们举一个例子,其中有两个按钮“隐藏”和“显示”。此外,按钮下方还有一个编辑框。当我们点击“隐藏”按钮时,编辑框会从页面上消失。

现在让我们在隐藏的文本框中输入一些文本。

示例

代码实现。

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.JavascriptExecutor;
public class ElementHidden{
   public static void main(String[] args) {
      System.setProperty("webdriver.chrome.driver",
      "C:\Users\ghs6kor\Desktop\Java\chromedriver.exe");
      WebDriver driver = new ChromeDriver();

      //implicit wait
      driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

      //URL launch
      driver.get("https://learn.letskodeit.com/p/practice");

      // identify element and click
      driver.findElement(By.id("hide-textbox")).click();

      // Javascript executor class with executeScript method
      JavascriptExecutor j = (JavascriptExecutor) driver;

      // identify element and set value
      j.executeScript
      ("document.getElementById('displayed-text').value='Selenium';");
      String s = (String) j.executeScript("return
      document.getElementById('displayed-text').value");
      System.out.print("Value entered in hidden field: " +s);
      driver.close()
   }
}

输出

更新于: 2021年11月22日

14K+ 浏览量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告