如何在 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+ 瀏覽量

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告