硒陈旧元素c#

时间:2015-03-17 14:04:18

标签: c# selenium

protected SelectElement GetSelectElement(By selector)
    {
        new WebDriverWait(driver, TimeSpan.FromSeconds(30)).Until(c =>
        {
            try
            {
                new SelectElement(driver.FindElement(selector));
                return true;
            }
            catch (StaleElementReferenceException)
            {
                return false;
            }
        });

        return new SelectElement(driver.FindElement(selector));
    }

即使使用这个函数,我仍然会在返回行上获得陈旧元素,不知道还有什么可以避免陈旧元素。

1 个答案:

答案 0 :(得分:1)

看起来你正在进行boolean检查,但在返回SelectElement时却没有使用它。结果,return new SelectElement(driver.FindElement(selector));抛弃了StaleElementException而没有照顾你之前所做的事情。

protected SelectElement GetSelectElement(By selector)
{
    bool flag = new WebDriverWait(Driver, TimeSpan.FromSeconds(30)).Until(c =>
    {
        try
        {
            new SelectElement(Driver.FindElement(selector));
            return true;
        }
        catch (StaleElementReferenceException)
        {
            return false;
        }
    });

    if (flag)
    {
        return new SelectElement(Driver.FindElement(selector));

    }
    else
    {
        //something
    }

    return null;
}