У нас есть проект .NET 4.5, MVC, C#. Мы используем Selenium для тестов пользовательского интерфейса, и тесты периодически дают сбой в строках, которые у нас есть wait.Until()
. Один из таких примеров:
NoSuchElementException was unhandled by user code
An exception of type 'OpenQA.Selenium.NoSuchElementException' occurred in WebDriver.dll but was not handled in user code
Additional information: Unable to locate element: {"method":"css selector","selector":"#assessment-472 .status-PushedToSEAS"}
Это брошено прямо здесь:
Thread.Sleep(600);
wait.Until(drv => drv.FindElement(By.CssSelector("#" + assessmentQueueId + " .status-PushedToSEAS")));
Я вижу, что браузер открывается, я вижу, что он дошел до этой точки, и я могу проверить элемент, чтобы убедиться, что он существует. Его идентификатор точно правильный.
У нас есть эта проблема МНОГО, и до сих пор решение заключалось в том, чтобы поставить перед ней Thread.Sleep(600)
(или какое-то подобное время). Весь смысл wait.Until()
в том, чтобы этого не делать, и из-за этого наши наборы тестов становятся очень длинными. Кроме того, как вы можете видеть в приведенном выше примере, иногда у нас возникает проблема даже после того, как перед ней ставится Thread.Sleep()
, и нам приходится увеличивать время.
Почему .NET Selenium WebDriver.Until()
не работает, и есть ли другой способ сделать то же самое, не дожидаясь установленного периода времени? Опять же, проблема носит периодический характер, что означает, что она возникает только иногда и может произойти при любом количестве операторов wait.Until()
, а не только в показанном!
Изменить:
Это переменная класса. private WebDriverWait wait;
Он создается следующим образом:
this.wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
wait
? Спасибо. - person alecxe   schedule 04.03.2015