2014-12-17 3 views
0

При попытке выполнить следующий метод FindElements на странице:FindElements не найдены причины WebDriverException

var match = Driver.Instance.FindElements(By.LinkText("Click here")); 

Я получаю сообщение об ошибке:

An exception of type 'OpenQA.Selenium.WebDriverException' occurred in WebDriver.dll but was not handled in user code. 
OpenQA.Selenium.WebDriverException was unhandled by user code 
HResult=-2146233088 
Message=The HTTP request to the remote WebDriver server for URL http://localhost:7057/hub/session/a90c4828-3fb3-46d1-923d-8c5cbb65c4fe/elements timed out after 60 seconds. 
Source=WebDriver 

Текст ссылки «Нажмите здесь» Безразлично» t на самом деле существует на странице, поэтому я не ожидаю, что FindElements (By) действительно найдет что-нибудь (я использую его позже в инструкции If). Метод выдает время, вызывая указанное выше исключение.

Из моего понимания, хотя, если FindElements истекает время и на самом деле ничего не находят, он должен вернуть 0 элементов. Не просто тайм-аут и исключение.

Неужели кто-нибудь еще сталкивается с этим или имеет какие-либо идеи, что может вызвать его?

+0

xander, насколько я знаю, findElements возвращает коллекцию элементов, которая соответствует критериям. Это может быть ноль или несколько элементов. Я надеюсь, что проблема заключается в присвоении коллекции «var match». Может у вас есть заявление, подобное списку eles = ваши поиски и дайте попробовать – Uday

+0

Какая версия Selenium, какой браузер и какая версия этого браузера? – Arran

ответ

1

FindElements() выкинет WebDriverExepction, потому что я создал драйвер.

Я создал драйвер в своем собственном классе:

public class Driver 
{ 
    public static IWebDriver Instance { get; private set; } 

    public static void Initialise() 
    { 
     Instance = new FirefoxDriver(); 
     Instance.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); 
    } 
} 

Это означало, в начале тестового примера я бы назвал Driver.Initialise(), а затем использовать драйвер так:

Driver.Instance.FindElements(By.Id("ABC")); 

По какой-то причине (я до сих пор не знаю реального ответа) класс драйвера, не являющийся статическим и вызывающий метод FindElements, возвратит исключение WebDriverException вместо списка из 0 элементов.

Просто изменяя класс:

public static class Driver 
{ 
    public static IWebDriver Instance { get; private set; } 

    public static void Initialise() 
    { 
     Instance = new FirefoxDriver(); 
     Instance.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5)); 
    } 
} 

Исправлена ​​проблема.

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