Selenium等到元素可见问题

时间:2014-03-27 17:11:56

标签: c# selenium selenium-webdriver

等待元素可见的正确方法有问题。

让我描述页面是如何工作的。页面已加载,显示下拉列表,但随后出现了进度条(jquery block UI),因为根据某些条件,数据是从db加载的。

所以我使用了两个方法,一个用于等待元素存在,然后等待消失,但在某些场合(可能还有其他方式加载等)我得到了Internet Explorer崩溃(所以selenium也不例外,但IE的崩溃)。下面的方法和执行:

public IWebElement WaitForPageElementToLoad(By by, IWebDriver driver, int timeInSeconds)
            {
                WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeInSeconds));
                wait.Until(ExpectedConditions.ElementIsVisible(by));
                return driver.FindElement(by);
            }

public void WaitForPageElementToBeRemoved(By by, IWebDriver driver, int timeInSeconds)
            {
                WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeInSeconds));
                wait.Until<bool>((d) =>
                {
                    try
                    {
                        IWebElement element = d.FindElement(by);
                        return false;
                    }
                    catch (NoSuchElementException)
                    {
                        return true;
                    }
                });
            }

执行:

WaitForPageElementToLoad(By.XPath("//div[@class='blockUI blockOverlay']"), ieDriver, 25);
WaitForPageElementToBeRemoved(By.XPath("//div[@class='blockUI blockOverlay']"), ieDriver, 25);
WaitForPageElementToLoad(By.Id("clientSelector"), ieDriver, 25);

我认为webdriver正在搜索某些工作中的元素,我不知道如何弄清楚,正确编写它。也许你会有一些提示等等。

0 个答案:

没有答案