Selenium C# WebDriver: Wait until element is present

前端 未结 24 3067
礼貌的吻别
礼貌的吻别 2020-11-22 08:53

I want to make sure that an element is present before the webdriver starts doing stuff.

I\'m trying to get something like this to work:

WebDriverWait w         


        
24条回答
  •  野性不改
    2020-11-22 09:54

    Since I'm separating page elements definitions and page test scenarios using already found IWebElement for visibility could be done like this:

    public static void WaitForElementToBecomeVisibleWithinTimeout(IWebDriver driver, IWebElement element, int timeout)
    {
        new WebDriverWait(driver, TimeSpan.FromSeconds(timeout)).Until(ElementIsVisible(element));
    }
    
    private static Func ElementIsVisible(IWebElement element)
    {
        return driver => {
            try
            {
                return element.Displayed;              
            }
            catch(Exception)
            {
                // If element is null, stale or if it cannot be located
                return false;
            }
        };
    }
    

提交回复
热议问题