public static void WaitForElement(this RemoteWebDriver driver, By by)
        {
            var attempts = WaitTimes;

            while (attempts > 0)
            {
                try
                {
                    ExecuteWithLogging(() => FluentWait.Create(driver)
                                       .WithTimeout(WaitTimeout)
                                       .WithPollingInterval(PollingInterval)
                                       .Until(WebDriverWaits.VisibilityOfAllElementsLocatedBy(by)), by);
                    return;
                }
                // System.InvalidOperationException : Error determining if element is displayed (UnexpectedJavaScriptError)
                catch (InvalidOperationException e)
                {
                    Console.WriteLine("Following Exception is occured in the WaitForElement method: {0}", e.Message);
                }
                // System.InvalidOperationException :The xpath expression './/option[contains(text(),'xxx')]' cannot be evaluated or does notresult in a WebElement
                catch (InvalidSelectorException e)
                {
                    Console.WriteLine("Following Exception is occured in the WaitForElement method: {0}", e.Message);
                }
                catch (Exception e)
                {
                    Console.WriteLine($"Error waiting element by '{by}' : {e.Message}");
                    throw;
                }
                finally
                {
                    attempts--;
                }
            }
        }
        public static void WaitWhileControlIsNotDisplayed(this RemoteWebDriver driver, By by)
        {
            WebDriverWait wait = new WebDriverWait(driver, WaitTimeout);

            wait.Until(WebDriverWaits.VisibilityOfAllElementsLocatedBy(by));
        }