2015-07-10 4 views
0

Я написал консольное приложение (visual studio 2013, C#), чтобы протестировать мой веб-сайт с селеном.Selenium C#, WebDriverWait timeout

Это мой код

public static void Main(string[] args) 
    { 
     IWebDriver driver = new FirefoxDriver(); 
     driver.Navigate().GoToUrl("myUrl"); 

     WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(40)); 
     wait.Until(ExpectedConditions.ElementExists(By.Id("wsConnected"))); 

     driver.Quit(); 
    } 

wsConnected является ДИВ я вставил страницу с JQuery после загрузки страницы (менее 10 секунд).

Я использую Selenium 2.46.0 с Firefox v39.0

Конечно, это не работает, потому что я получаю ошибку тайм-аута водителя через 60 секунд, любая помощь будет очень высокую оценку.

Спасибо, Алессандро

[UPDATE] wait.Until терпит неудачу с этим исключением: необработанного исключения типа 'OpenQA.Selenium.WebDriverException' произошел в WebDriver.Support.dll. Дополнительная информация: HTTP-запрос на удаленный сервер WebDriver для URL http://localhost:7056/hub/session/86847fde-462b-47be-85e1-31cd51791dc3/element истекает через 60 секунд.

[UPDATE 2] I понизило Селен до 2,43 и светлячок в v32, тайм-аут, бесконечные ожидания

+0

Итак, wsConnected нет на вашей странице, когда он загружается? и он явно вставлен после загрузки страницы, не так ли? –

+0

Да, это код в нагрузке $ ('body'). Append ('

'); –

+0

Можете ли вы попробовать добавить короткий сон после навигации по URL-адресу, может составлять 10 секунд (при условии, что максимальное время, затрачиваемое на вставку div) на 10 секунд, см., Если это работает, позже вы/мы можем работать над оптимизацией. –

ответ

0

Старайтесь избегать использования ExpectedConditions.
Причина ошибки будет намного более понятной.
Следующий код был протестирован с последней версией селена (Selenium Support Classes 2.48.2 и WebDriver 2.48.2 из пакетов nuget). Он отлично работает, даже если элемент становится видимым через 10 секунд.

IWebDriver driver = new FirefoxDriver(); 
driver.Navigate().GoToUrl("https://www.google.ru/"); 
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(40)); 
wait.Until(d => d.FindElement(By.Id("logocont"))); 
driver.Quit(); 

Если это не поможет, предоставьте внутреннее исключение исключения таймаута.

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