【问题标题】:Not able to find elements in side a iframe using xpath无法使用 xpath 在 iframe 中找到元素
【发布时间】:2025-12-08 11:30:01
【问题描述】:

我正在尝试在网站https://www.toolsqa.com/iframe-practice-page/ 上的 iframe 内打印所有锚标记,但 webdriver 返回 0 个元素

我已经使用 swithcTo 方法将控件从主窗口移动到 iframe,但它没有帮助

driver.switchTo().frame(driver.findElement(By.xpath("//iframe[@id='IF2']")));

@Test
public void iFrmesCount(String browserName) throws InterruptedException {
    if (browserName.equalsIgnoreCase("chrome")) {
        System.setProperty("webdriver.chrome.driver", "drivers//chromedriver.exe");
        driver = new ChromeDriver();}
    driver.get("https://www.toolsqa.com/iframe-practice-page/ ");
    driver.manage().window().maximize();
    Thread.sleep(2000);
    driver.switchTo().frame(driver.findElement(By.xpath("//iframe[@id='IF2']")));
    System.out.println("Span's inside iframe" + driver.findElements(By.xpath(".//span")).size());
    System.out.println("Div's inside iframe" + driver.findElements(By.xpath(".//div")).size());
}   

【问题讨论】:

    标签: google-chrome selenium-webdriver xpath iframe


    【解决方案1】:

    试试这个

        driver.get("https://www.toolsqa.com/iframe-practice-page/");
        driver.manage().window().maximize();
        driver.switchTo().frame("IF2");
        List<WebElement> list = driver.findElements(By.tagName("a"));
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i).getText());
        }
    

    【讨论】:

    • 当我使用 iframe 的 WebElement 作为 driver.switchTo().frame(-) 的参数时,不起作用。但是,当我使用 ID 作为参数时,它起作用了,为什么会这样?
    • 尝试使用 selenium 截取页面以解决问题。 WebElement 选项适用于其他窗口尺寸 - 如果您使用 driver.manage().window().setSize(new Dimension(1920,1080)); 而不是 driver.manage().window().maximize();
    最近更新 更多