2015-03-31 3 views
0

У меня есть цикл, который нажимает на веб-сайт и проверяет, работают ли ссылки.Элемент не отображается, когда цикл цикла пуст

Но когда я ввожу страницу, у которой нет ссылок, проверка очевидна не удалась. Но я не могу понять, как остановить тест, а не провалить его.

Это мой очень простой цикл

public void TestT2Links() 
{ 
    int count = LinkElements.Count; 
    for (int i = 3; i < count; i++) 
    { 
     PropertiesCollection.driver.FindElements(By.TagName("a"))[i].Click(); 
    } 
} 

Error Log из VS

Результат Сообщение:

OpenQA.Selenium.ElementNotVisibleException : element not visible 
    (Session info: chrome=40.0.2214.93) 
    (Driver info: chromedriver=2.10.267521,platform=Windows NT 6.1 SP1 x86_64) 

Результат StackTrace:

at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse) 
at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters) 
at OpenQA.Selenium.Remote.RemoteWebElement.Click() 

Любые идеи о том, как я ld остановить его?

+0

ли некоторые ошибки обработки, чтобы увидеть, если элемент виден, прежде чем нажать – Sayse

ответ

1

Добавить проверить видимость перед нажатием кнопки:

var e = PropertiesCollection.driver.FindElements(By.TagName("a")); 
for (int i = 3; i < e.Count; i++) { 
    if (e[i].Displayed) { 
     e[i].Click(); 
    } 
} 
+0

Я понимаю принцип, и он должен работать ... но я бег в и системах .ArgumentOutOfRangeException сейчас. Положил разрыв в выражении else, но цикл все еще падает. – Dymond

+1

@Dymond Я уверен, что это связано с отключением между 'count' всех ссылок на странице и количеством ссылок, помеченных' 'a' '. Посмотрите на редактирование, оно должно исправить «ArgumentOutOfRangeException». – dasblinkenlight

+0

Спасибо. Сначала у меня были проблемы, но теперь он работает как шарм :) – Dymond

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