Tôi đang sử dụng thử nghiệm Selenium 2 (được viết bằng C#) để chọn giá trị từ điều khiển "chọn". Lựa chọn gây ra một post-back cho máy chủ, cập nhật trạng thái của trang. Do đó, tôi thực hiện chờ đợi thủ công (thread.sleep
) sau khi chọn một giá trị để chờ trang thay đổi. và nó hoạt động tốt với Thread.Sleep. Tuy nhiên, Thread.Sleep
là một ý tưởng tồi để sử dụng với số lý do chính đáng vì vậy khi tôi đưa ra tất cả các dòng Thread.Sleep
tôi mã sau đó tất cả các trường hợp thử nghiệm của tôi sụp đổ và tôi đã cố gắng WebDriverWait, ngầm và Rõ ràng không hoạt động và rất thất vọngWebDriverWait hoặc ImplicitlyWait hoặc ExplictlyWait không có gì hoạt động
dưới đây là đoạn code mẫu mà tôi đã cố gắng ....
// 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;
}
cố gắng này quá:
WebDriverWait wait = new WebDriverWait(new SystemClock(), driver, TimeSpan.FromSeconds(30), TimeSpan.FromMilliseconds(100));
// Mặc nhiên:
driver.Manage().Timeouts().ImplicitlyWait(new TimeSpan(0, 0, 30));
// Explicit Chờ:
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"));
});
vâng tôi đã cố gắng nhưng đã không làm việc. –