I want to find and print all the names of the backgrounds found on this page:
https://store.steampowered.com/points/shop/c/backgrounds/cluster/2
And the problem in my program is that I can't scroll to the bottom of page. I tried
- Actions
- Selecting a random element to perform a space key press on it
- A bunch of Javascript code (none of which has worked on this site)
- The Robot method (with which I send a pagedown keystroke and it does work, yet I can't use the pc to do anything else while it's scrolling)
This is my program so far:
public static void steamScraper() {
System.setProperty("webdriver.chrome.driver", "C:\\Users\\user\\Documents\\Selenium\\chromedriver_win32\\chromedriver.exe");
ChromeOptions options = new ChromeOptions();
options.setBinary("C:\\Users\\user\\Downloads\\chrome-win\\chrome.exe");
WebDriver driver = new ChromeDriver(options);
driver.get("https://store.steampowered.com/points/shop/c/backgrounds/cluster/2");
driver.manage().window().maximize();
// let the page load for some time
try {
Thread.sleep(5000);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
JavascriptExecutor js = (JavascriptExecutor) driver;
// i = 2200, because there are ~44000 items and 20 items load each scroll, thus 44000 / 20 = 2200
for (int i = 0; i < 10; i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
System.out.println(i + 1 + ". " + "scrolling...");
// here is where I would do the scrolling, and I tried a lot of javascript methods to scroll to the bottom of the page
// yet none that I have tried yet would actually perform a scroll (though the method below worked on another site than Steam)
//
// js.executeScript("window.scrollTo(0, document.body.scrollHeight)");
}
System.out.println("");
// get all div classes containing an item (background)
List<WebElement> nameOfGames = driver.findElements(By.xpath(".//div[@class='rewarditem_AppIconContainer_3Oyyi']//img"));
for (WebElement webElement : nameOfGames) {
// print the item name (title of img)
System.out.println(webElement.getAttribute("title"));
}
} ```