Список for, список exe. Последовательность не содержит соответствующий элемент

Регистрация
05.09.2018
Сообщения
10
Благодарностей
0
Баллы
3
Всем привет !! Только начал заниматься зенкой сейчас..
Застопорился на задаче - собрать в список строки с аштимль. Пишется ошибка:


Выполнение действия CSharp OwnCode: Список for, список exe. Последовательность не содержит соответствующий элемент
Сбойное действие: Список for, список exe
Что это может быть ?

Все нормально (на первых двух блоках)
1 блок кода:

//переход на страницу
instance.ActiveTab.Navigate("https://home.1k.by/climate-airconditioners/choice/", "");
//ожмдание прогрузки страницы, это нужно для корректной работы шаблона
instance.ActiveTab.WaitDownloading();
//return "the transition took place";

Второй блок кода:


// находим элемент
HtmlElement Firma = instance.ActiveTab.FindElementByAttribute("span", "innertext", "AEG", "regexp", 0);

//Firma.Click();

// заполняем строку внутренним кодом
//string FirmaNamehtml = Firma.GetAttribute("innerhtml");
//return FirmaNamehtml;
//string FirmaNametext = Firma.GetAttribute("innertext");
//return FirmaNametext;
HtmlElementCollection Firms = instance.ActiveTab.FindElementsByAttribute("span", "class", "cbx_txt", "regexp");
return Firms.Count();

3 блок кода - на котором все останавливается:


project.Lists["FirmsNameList"].Clear();

HtmlElementCollection Firms = instance.ActiveTab.FindElementsByAttribute("span", "class", "cbx_txt", "regexp");

string FirmaName = String.Empty;
//инициируем цикл, внутри которого будем извлекать аштимль код элементов из вышесозданной коллекции, и помещать его в список.
/*Условия работы цмкла: ининциируем счетчик "а", по умолчанию равен нулю. Цикл совершает повторения, пока счетчик "а" меньше 20.
С каждой интерацией (повторением) счетчик увеличивается на 1*/
for ( int a = 0; a < 20 ; a++ )
{
// заполняем строку внутренним аштимль кодом элемента коллекции под текущим индексом.

FirmaName = Firms.GetByNumber(a).GetAttribute("innerhtml");
//Заносим полученную строку в список
project.Lists["FirmsNamesList"].Add(FirmaName);
//Кликаем на текущий элемент коллекции (просто для разнообразия действий).
Firms.GetByNumber(a).Click();
// Если строка содержит Electrolux, то:
if (FirmaName.Contains("Electrolux"))
{
// Оставляем в логе сообщение "Electrolux"
project.SendInfoToLog("Electrolux");
//кликаем по текущему html элементу
Firms.GetByNumber(a).Click();
}
// Если строка FirmaName не содержит "Electrolux", то:
else
{
// Переходим к следующей интеграции цикла
continue;
}

}
//Показать количество строк в списке:
return project.Lists["FirmsNamesList"].Count;
 

gevolushn

Известная личность
Регистрация
25.03.2019
Сообщения
518
Благодарностей
269
Баллы
63
На первый взгляд синтаксис правильный. Скорее всего проблема в количестве элементов, с которыми вы работаете.
При обращении к несуществующему элементу, вам скорее всего и выдает ошибку. Вместо грани 20 сделайте по количеству элементов Firms.Count.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)