public void WaitToDisappearWaitsForTheElementToDisappear() { // It seems that Firefox times are very inaccurate, so we expect 400ms+/-200ms (See: https://stackoverflow.com/a/16753220) var expectedTimeout = 400.Milliseconds(); var pageSource = @" <html> <script> function hideSoon() { var el = document.getElementById('myBtn'); window.setTimeout(function() { el.style.display = 'none'; }, " + expectedTimeout.TotalMilliseconds + @"); } </script> <body> <button id='myBtn' onclick='hideSoon()'>Hide me</button> </body> </html>"; using (var browser = OpenBrowserWithPage(pageSource)) { var btn = browser.WaitForElement(By.Id("myBtn"), "button"); btn.Click(); var startTime = DateTime.Now; btn.WaitToDisappear(1.Seconds()); var endTime = DateTime.Now; Assert.IsFalse(btn.Displayed, "Button should have disappeared"); var threshold = 200.Milliseconds(); WaitTests.AssertTimeoutWithinThreashold(startTime, endTime, threshold, "WaitForDisappear"); } }
public void OpenWindowThrowsTimeoutExceptionIfAWindowIsntOpenedAfterSpecifiedTimeout() { const string pageSource = @" <html> <body> <button id='dummyButton'>Click me</button> </body> </html>"; using (var browser = OpenBrowserWithPage(pageSource)) { var button = browser.WaitForElement(By.Id("dummyButton"), "Dummy button"); var startTime = DateTime.MinValue; var expectedTimeout = WaitTests.DefaultWaitTimeoutForUnitTests; TestUtils.ExpectException <TimeoutException>(() => browser.OpenWindow(() => { startTime = DateTime.Now; button.Click(); }, "non existent window", expectedTimeout)); // TODO: use WaitTests's constant after merge with master var endTime = DateTime.Now; WaitTests.AssertTimeoutWithinThreashold(startTime, endTime, expectedTimeout + WaitTests.DefaultWaitTimeoutForUnitTests, "OpenWindow"); } }