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.