如何使用XPath選擇iframe內部的元素?


我們可以在 Selenium webdriver 中使用 xpath 選擇 iframe 內部的元素。框架在 html 程式碼中使用 <iframe>、<frameset> 或 <frame> 標籤定義。框架用於將一個 HTML 文件嵌入到另一個 HTML 文件中。讓我們看看框架的 html 程式碼。

Selenium 預設情況下可以訪問父瀏覽器驅動程式。為了訪問框架內部,驅動程式焦點必須從主瀏覽器視窗切換到框架。有多種方法可以將焦點切換到框架 -

  • switchTo().frame(id) - 將框架的 id 或名稱作為引數傳遞。

    語法 - driver.switchTo().frame("id"),切換到具有 id 的框架。

  • switchTo().frame(m) - 將框架的索引作為引數傳遞。索引從零開始。

    語法 - driver.switchTo().frame(0),切換到頁面中的第一個框架。

  • switchTo().frame(webelement n) - 將框架的 webelement 作為引數傳遞。

    語法 - driver.switchTo().frame(l),切換到具有 l webelement 的框架。

一旦我們將驅動程式焦點移動到框架內部,我們就可以使用 xpath 定位符和 driver.findElement(By.xpath(<xpath value>)) 方法訪問框架內部的元素。

示例

程式碼實現。

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;
public class iFrameXpath{
   public static void main(String[] args) {
      System.setProperty("webdriver.chrome.driver", "C:\Users\ghs6kor\Desktop\Java\chromedriver.exe");
      WebDriver driver = new ChromeDriver();
      driver.get("https://the-internet.herokuapp.com/frames");
      driver.manage().timeouts().implicitlyWait(8, TimeUnit.SECONDS);
      // identify element and click
      driver.findElement(By.partialLinkText("Nested")).click();
      // switching to frame with frame name
      driver.switchTo().frame("frame-bottom");
      WebElement m = driver.findElement(By.xpath("//body"));
      System.out.println("Element identified with xpath: " +m.getText());
      driver.close();
   }
}

輸出

更新於: 2020-10-26

10K+ 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告