I am using Selenide to test a website. I need some event listeners set up on every page. To do so I need some kind of page load event that tells me whenever Selenium is loading a new page.
A possible (but ugly) solution would be checking the current url in a loop every x seconds.
Solution:
WebDriverRunner.addListener(new WebDriverEventListener() {
    private String urlBeforeClick;
    @Override
    public void afterNavigateTo(String s, WebDriver webDriver) {
        // code here
    }
    @Override
    public void beforeClickOn(WebElement webElement, WebDriver webDriver) {
        this.urlBeforeClick = webDriver.getCurrentUrl();
    }
    @Override
    public void afterClickOn(WebElement webElement, WebDriver webDriver) {
        // if the url is different after a click a new page was loaded.
        if (!Objects.equals(this.urlBeforeClick, webDriver.getCurrentUrl()))
            // code here
    }
});
Note: I dont think this is should be marked as a duplicate.
 
     
    