Skip to main content

Handle Pages with Lazy Loading

If you encounter difficulties loading interactive elements that appear on scroll in full-page screenshots, consider functionally incorporating a full-page scroll into your script before capturing the screenshot. This approach ensures the elements load first, facilitating the screenshot processing.

const { Builder, By, Key, until } = require('selenium-webdriver');
const { smartuiSnapshot } = require('@lambdatest/selenium-driver');

(async function example() {
let driver = await new Builder().forBrowser("chrome").build();

try {
await driver.get("Required URL");
async function quickScrollToBottom(lastPageWait) {
try {
let height = await driver.executeScript("return document.body.scrollHeight");
let heightOfPage = parseInt(height, 10);
let size = 200;
let noOfLoop = Math.floor(heightOfPage / size);

for (let i = 1; i <= noOfLoop; i++) {
await driver.executeScript(`window.scrollTo(${(i - 1) * size}, ${i * size})`);
await new Promise(resolve => setTimeout(resolve, 1000));
if (i === noOfLoop) {

await driver.executeScript(`window.scrollTo(${i * size}, ${heightOfPage})`);
await new Promise(resolve => setTimeout(resolve, lastPageWait));
}
}

// Now scroll to the top
await driver.executeScript("window.scrollTo(0,0)");
await new Promise(resolve => setTimeout(resolve, 10000));
console.log("Scroll Completed");
} catch (e) {
console.log("Got some errors" + e.toString());
}
}
await quickScrollToBottom(100); //use wait time accordingly
await smartuiSnapshot(driver, "Screenshot Name");
} finally {
await driver.quit();
}
})();

Test across 3000+ combinations of browsers, real devices & OS.

Book Demo

Help and Support

Related Articles