【问题标题】:How to get Multiple iframes content at once using selenium in java如何在 Java 中使用 selenium 一次获取多个 iframe 内容
【发布时间】:2015-07-23 10:16:47
【问题描述】:

这里我想获取网页的pagesource。网页有iframe。我可以使用下面的代码获取页面内容但不能获取iframe内容

WebDriver driver = new PhantomJSDriver(caps);
driver.get(url);
Thread.sleep(10000);
System.out.println(driver.getPageSource());

但是,我可以使用以下代码获取 iframe 内容,但不能获取页面内容

WebDriver driver = new PhantomJSDriver(caps);
driver.get(url);
Thread.sleep(10000);
WebElement iframe=driver.findElement(By.xpath("//[@id='selection']/div/iframe"));
driver.switchTo().frame(iframe);
System.out.println(driver.getPageSource());

这里,我想同时获取pagecontent和iframe内容。

另一种情况是,如果一个网页有多个 iframe,我需要获取所有 iframe 内容以及页面内容。

是否可以同时获取 iframe 和主页内容的内容..?

【问题讨论】:

    标签: java javascript selenium iframe phantomjs


    【解决方案1】:

    编写一个获取内容的方法,例如:

    public void getIframeContent()
       try
       {
          WebElement iframe=driver.findElement(By.xpath("//[@id='selection']/div/iframe"));
          driver.switchTo().frame(iframe);
          System.out.println(driver.getPageSource());
       }
       finally
       {
          driver.SwitchTo().DefaultContent();
       }
    

    【讨论】:

    • 这会打印 OP 已经找到的 iframe 源。 OP 要求在父标记内打印所有 iframe 内容的组合解决方案。
    • 是的,它会打印 iframe 源而不是页面源。如果我在 finally 块中使用 driver.getPagesource() 而不是尝试,它会给出页面源而不是 iframe 源。我想要两者。
    • Webdriver 不会为您执行此操作。您需要编写一个方法,首先获取完整页面源,然后获取 iframe 源并将其注入到正确的位置。由于我想不出实际应用,您需要这样做有实际原因吗?
    • 我正在抓取一个网页,我需要在其中获取 iframe 和主页中的元素。所以,我需要获取全部内容才能继续进行进一步的操作。
    • 因此您实际上并不需要同时拥有所有内容。您的方法应该是获取主页中的元素,然后分别获取 iframe。
    猜你喜欢
    • 2015-10-28
    • 2018-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    • 1970-01-01
    相关资源
    最近更新 更多