【发布时间】:2012-10-19 03:35:53
【问题描述】:
我正在使用 Selenium 2 测试(用 C# 编写)从“选择”控件中选择值。选择会导致回发到服务器,从而更新页面的状态。因此,我在选择一个值以等待页面更改后执行手动等待 (thread.sleep)。它适用于 Thread.Sleep。但是,@ 987654322@ 是一个坏主意,有很多充分的理由使用,所以当我拿出我所有的@ 987654323@ 代码行时,我所有的测试用例都崩溃了,我尝试了 WebDriverWait,隐式和显式都没有工作,非常沮丧
下面是我尝试过的示例代码......
//WebDriverWait
public IWebElement WaitForElement(By by)
{
// Tell webdriver to wait
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
wait.PollingInterval = TimeSpan.FromSeconds(2);
wait.IgnoreExceptionTypes(typeof(NoSuchElementException), typeof(NoSuchFrameException));
wait.IgnoreExceptionTypes(typeof(StaleElementReferenceException), typeof(StaleElementReferenceException));
IWebElement myWait = wait.Until(x => x.FindElement(by));
return myWait;
}
也试过了:
WebDriverWait wait = new WebDriverWait(new SystemClock(), driver, TimeSpan.FromSeconds(30), TimeSpan.FromMilliseconds(100));
//隐式:
driver.Manage().Timeouts().ImplicitlyWait(new TimeSpan(0, 0, 30));
//显式等待:
IWebDriver driver = new FirefoxDriver();
driver.Url = "http://somedomain/url_that_delays_loading";
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30));
IWebElement myDynamicElement = wait.Until<IWebElement>((d) =>
{
return d.FindElement(By.Id("someDynamicElement"));
});
【问题讨论】:
标签: webdriver selenium-webdriver