首页 > 解决方案 > iframe缩小问题触发滚动硒java

问题描述

我正在尝试从具有巨大 iframe 的大型表格报告中捕获快照。为了捕获全屏,我需要缩小。使用常规 url 页面,以下代码可以完美运行,但是对于 iframe

    JavascriptExecutor executor = (JavascriptExecutor)driver;
    executor.executeScript("document.body.style.zoom = '50%'");

不起作用它的魅力,它将 iframe 容器缩放到 50%,但内容文本大小保持不变。

然后我加了

driver.switchTo().frame(driver.findElement(By.tagName("iframe")));

这有助于将缩放专门定向到该 iframe,但触发了滚动。

这是代码:

@Component
public class TableauReportingPage {

    @Autowired
    private BrowserCommands browserCommands;

    @Autowired
    private WebDriverService webDriverService;


    public void openExistingResource(String url) throws Exception{
        WebDriver driver = webDriverService.openNewBrowser();
        driver.manage().window().setSize(new Dimension(1650,950));
        driver.navigate().to(url);
        Thread.sleep(20000);
        driver.switchTo().frame(driver.findElement(By.tagName("iframe")));
        Thread.sleep(20000);
//        for(int i=0; i<6; i++){
//            System.out.println(i);
//            new Actions(driver)
//                    .sendKeys(Keys.CONTROL).sendKeys(Keys.SUBTRACT)
//                    .perform();
//            browserCommands.findElementsById("viz-client-container").
//                    sendKeys(Keys.chord(Keys.CONTROL,Keys.SUBTRACT));
//        }
        JavascriptExecutor executor = (JavascriptExecutor)driver;
        executor.executeScript("document.body.style.zoom = '50%'");
        Thread.sleep(20000);

   }

    public File getScreenshot(){
        try {
            Thread.sleep(10000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return browserCommands.getScreenshot();
    }
}

这是之前的图片: 在此处输入图片描述

这是执行代码后: 在此处输入图像描述

知道如何正确编码和缩放 iframe 以查看所有对象的屏幕截图吗?

标签: javascripthtmlseleniumiframejava-8

解决方案


推荐阅读