Site Loader
Auckland, New Zealand
We all perform some operation in UI of a page if the control exist or displayed. This can be done using IWebElement.Displayed property in Selenium. But the problem is, if the control does not appear before we try to check if it exist in the page, it will throw us a StaleElementReferenceException or NoSuchElementException, which is expected, since the page might have loaded slowly were as the Selenium is fast enough to execute the operation. Hence try to always write the IWebElement.Displayed in try catch block so that you don’t end up having exception. And you can wait for the control using Explicit wait as shown below.
public static void WaitForControlExist(IWebDriver driver,IWebElement element)
{
            WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(40));
            wait.Until((d)
            {
                try
                {
                    return element.Displayed;
                }
                catch (NoSuchElementException e)
                {
                    //Write No element exception
                    return false;
                }
            });
}
The method above will wait explicitly for the control exist for 40 seconds, since we have handled the exception for NoSuchElementException  the StaleElementRefereceException does not appears This way we can wait for the control safely without ending up with exceptions using IWebElement.Displayed property!!! Thanks, Karthik KK

Post Author: Karthik kk

Leave a Reply

Your email address will not be published. Required fields are marked *