2016-08-09 3 views
1

С момента обновления до драйвера Marionette. Firefox больше не делает ожидания. В принципе, я хочу, чтобы он входил в систему, дождался загрузки страницы, затем проверьте, не зарегистрирован ли он, находя «на выходе» на странице. Вот моя установкаSelenium - FireFox/Marionette драйвер не делает wait.Until

// navigate to url "http://..." 
// Find Log In button and .Click() 

WebDriverWait wait = new WebDriverWait(driver, System.TimeSpan.FromSeconds(30)); 
wait.Until(driver1 => ((IJavaScriptExecutor)driver).ExecuteScript("return document.readyState").Equals("complete")); 

// Assert if the page contains "Log out" 

Что происходит после щелчка Войдите в систему, он не дожидаясь загрузки страницы, так что он будет выдавать ошибку, потому что не может найти «Выйти»

Я подчеркиваю, что код работал на более старый драйвер Firefox (Not Marionette), а также на драйвер Chrome. Кто-нибудь еще сталкивается с проблемой, когда новый драйвер Firefox не делает ожидания?

К сожалению, я должен был быть более ясным, водитель Firefox не делает НИКАКИЕ ждет, поэтому ожидания элемента существующего не будет работать либо

+1

Так почему же вы не ждали выхода из системы, вместо того, чтобы ждать ReadyState ?? –

+0

Просьба предоставить больше кода, который вы используете, HTML кнопок входа и выхода, а также ошибку, которую вы получаете. – JeffC

+0

Я мог бы предоставить больше кода, но не сейчас. Как я уже сказал, старый драйвер Firefox и хром-драйвер работают и ждут, поэтому, предполагая, что марионетка работает одинаково, мой код должен быть правильным, если он работал для других драйверов –

ответ

0

Причины ваш тест неисправный является то, что указано Jonny в комментариях. Вы ожидаете, что страница будет готова сразу после входа в систему, которая уже «готова», поскольку вы только что взаимодействовали с ней. То, что вы хотите сделать, - это неявное ожидание элемента off off. Это можно сделать с помощью нескольких разных методов.

wait.Until(ExpectedConditions.ElementExists(By.XPath(xpath))); 

wait.Until(ExpectedConditions.ElementExists(By.CssSelector(csspath))); 

Либо один из них будет выполнять неявное ожидание на странице, ожидая до 30 секунд (как определено в вашем ожидания элемента) для выхода из системы элементов можно найти.

+0

Проблема в том, что ее вовсе не ждет, так что ожидание на элементе не будет работать либо, я думаю, это может быть ошибкой в ​​драйвере марионетки. –

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