Я пытаюсь сделать снимок из большого отчета в виде таблицы с огромным фреймом. Для того, чтобы захватить весь экран, мне нужно уменьшить масштаб. С обычными страницами 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 для просмотра всех объектов на скриншоте?