2016-02-15 5 views
0

Я использую драйвер Selenium Web версии 2.48.2.Selenium C# Webdriver, пытаясь дождаться завершения всех действий до закрытия

Моя проблема в том, что я хочу дождаться загрузки самого последнего URL-адреса, а затем снять снимок экрана и закрыть браузер и драйвер.

Поэтому, если я отлаживаю сеанс, я могу сразу увидеть, как все мои методы вызываются, не дожидаясь загрузки браузера, это проблема, потому что если у меня есть метод Quit() в последней строке кода, браузер немедленно закрывается и не проходит через каждый шаг во времени.

Если я удалю метод Quit(), браузер выполнит все мои сценарии, как ожидалось.

Итак, есть способ, чтобы водитель подождал, пока браузер не закончит действие всех моих шагов?

Любая помощь очень ценится.

+0

использование ждет http://stackoverflow.com/questions/15122864/selenium-wait-until-document-is-ready –

ответ

0

Это действительно зависит от того, что происходит. Лучше подождать элемент появится на экране, используя явное ожидание http://www.seleniumhq.org/docs/04_webdriver_advanced.jsp

IWebDriver driver = new FirefoxDriver(); 
    driver.Url = "http://somedomain/url_that_delays_loading"; 
    WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); 
IWebElement myDynamicElement = wait.Until<IWebElement>((d) => 
    { 
     return d.FindElement(By.Id("someDynamicElement")); 
    }); 

Если это не представляется возможным, вы можете попробовать инъекционные JavaScript на страницу с

setTimeout(functionThatAddsAnElementToTheDom,1); 

Это будет запущен, как только ваш другой процесс завершится, и вы можете проверить новый элемент, используя Wait.Until()

Смежные вопросы