如何使用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();
}
}输出

广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP