Selenium: Checking Web Page Load Completion
Many developers strive to validate the complete loading of a web page in Selenium for seamless and accurate testing. However, unlike explicit element visibility checks, there's no ready-made generic function to ascertain page load completion.
Tried Codes
You attempted to check with this code:
new WebDriverWait(firefoxDriver, pageLoadTimeout).until( webDriver -> ((JavascriptExecutor) webDriver).executeScript("return document.readyState").equals("complete"));
But, as you've observed, this approach has limitations.
PageLoadStrategy
While pageLoadStrategy can be set to "normal" to ensure 'document.readyState' equals "complete," it's not foolproof. JavaScript and Ajax calls may still be outstanding, requiring further measures.
Indefinite Waits
Approaches like waiting for "jQuery.active == 0" or using WebDriverWait with titleContains() involve indefinite wait times.
Visible Element Waits
A granular method is to employ WebDriverWait with visibilityOfElementLocated(). This makes your program wait specifically for the visibility of the desired element, providing a more precise check that it's fully loaded.
Additional References
For more insights, refer to these resources:
Conclusion
Although there's no generic function to check page load completion in Selenium, by employing the techniques discussed, such as PageLoadStrategy, "jQuery.active == 0," indefinite waits, and visible element waits, you can achieve an effective evaluation of page load progress.
The above is the detailed content of How Can I Reliably Check for Web Page Load Completion in Selenium?. For more information, please follow other related articles on the PHP Chinese website!