C# Проблема с выборкой из списка [Решено]

  • Автор темы Автор темы luk911
  • Дата начала Дата начала

luk911

Client
Регистрация
17.01.2013
Сообщения
1 542
Реакции
581
Баллы
113
Помогите разобраться

постоянно вылетает ошибка:
Заданный аргумент находится вне диапазона допустимых значений. Имя параметра: index

C#:
Развернуть Свернуть Копировать
var rnd = Global.Classes.rnd;
//XPath элемент
string xpath = "//a";
var tab = instance.ActiveTab;
instance.ActiveTab.Navigate("https://ru.wikipedia.org/wiki/%D0%9D%D0%BE%D1%81%D0%BA%D0%B8","");
if (tab.IsBusy)    tab.WaitDownloading();
    int count = 0;
    var colTexts = tab.FindElementsByXPath(xpath);
    //Вычленяем только видимые на странице элементы
    var colResult = tab.FindElementsByXPath("//sngvuyrbuy");
    if (colTexts.Count>0)
    {
        foreach (var el in colTexts.Elements)
        {
            int topInBrowser = int.Parse(el.GetAttribute("topInBrowser"));
            int leftInBrowser = int.Parse(el.GetAttribute("leftInBrowser"));
            //Если элемент видимый
            if (el.Height>0 && el.Width>0 && topInBrowser>=0 && leftInBrowser>=0)
            {
                colResult.Add(el);
                count++;
            }
        }
    }
    project.SendWarningToLog("всего элементов: '"+count+"'", true);
    colTexts = colResult;
    //Если коллекция пуста, выводи соответствующее сообщение в лог
    if (colTexts.Count<1)
    {
        project.SendWarningToLog("пусто '"+tab.URL+"'", true);
    }
    int chek = rnd.Next(10, 20);
    count = count - 1;
    for (int n=0; n<chek; n++)
    {
        int elnumber = rnd.Next(1, count);
        project.SendWarningToLog("номер элемента: '"+elnumber+"'", true);
        var elText = colTexts.ElementAt(elnumber);
    }
 
Последнее редактирование:
конечно будет выбивать. последний цикл о 0 до рандома. а проверка сколько там элементов где ?
 
конечно будет выбивать. последний цикл о 0 до рандома. а проверка сколько там элементов где ?
а можно развернуто ? просто не совсем понял что есть о 0 до рандома.
проверка элементов выше есть.Screen Shot 2019-12-06 at 15.30.24.png

как бы он вылетает на ровном месте всего элементов 166 а вылетает на 88
 
Это когда из за рандома цикл запрашивает номер элемента которого нет. Что должен делать код?
на данной странице 166 элементов так что не понимаю где вы там 0 нашли. И count равен 166 по итогу.
 
незнаю что за var elText = colTexts.ElementAt(elnumber); но это не работает

вот надо так var elText = colTexts.Elements[elnumber];
 
  • Оценить
Реакции: luk911
то что у тебя там написано 166, это не показатель что это не пустые индексы.

index = 0 value = ZennoLab.CommandCenter.HtmlElement
index = 1 value = ZennoLab.CommandCenter.HtmlElement
index = 2 value = ZennoLab.CommandCenter.HtmlElement
index = 3 value = ZennoLab.CommandCenter.HtmlElement
index = 4 value = ZennoLab.CommandCenter.HtmlElement
index = 5 value = ZennoLab.CommandCenter.HtmlElement
index = 6 value = ZennoLab.CommandCenter.HtmlElement
index = 7 value = ZennoLab.CommandCenter.HtmlElement
index = 8 value = ZennoLab.CommandCenter.HtmlElement
index = 9 value = ZennoLab.CommandCenter.HtmlElement
index = 10 value = ZennoLab.CommandCenter.HtmlElement
index = 11 value = ZennoLab.CommandCenter.HtmlElement
index = 12 value = ZennoLab.CommandCenter.HtmlElement
index = 13 value = ZennoLab.CommandCenter.HtmlElement
index = 14 value = ZennoLab.CommandCenter.HtmlElement
index = 15 value = ZennoLab.CommandCenter.HtmlElement
index = 16 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 17
index = 18 value = ZennoLab.CommandCenter.HtmlElement
index = 19 value = ZennoLab.CommandCenter.HtmlElement
index = 20 value = ZennoLab.CommandCenter.HtmlElement
index = 21 value = ZennoLab.CommandCenter.HtmlElement
index = 22 value = ZennoLab.CommandCenter.HtmlElement
index = 23 value = ZennoLab.CommandCenter.HtmlElement
index = 24 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 25
index = 26 value = ZennoLab.CommandCenter.HtmlElement
index = 27 value = ZennoLab.CommandCenter.HtmlElement
index = 28 value = ZennoLab.CommandCenter.HtmlElement
index = 29 value = ZennoLab.CommandCenter.HtmlElement
index = 30 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 31
index = 32 value = ZennoLab.CommandCenter.HtmlElement
index = 33 value = ZennoLab.CommandCenter.HtmlElement
index = 34 value = ZennoLab.CommandCenter.HtmlElement
index = 35 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 36
index = 37 value = ZennoLab.CommandCenter.HtmlElement
index = 38 value = ZennoLab.CommandCenter.HtmlElement
index = 39 value = ZennoLab.CommandCenter.HtmlElement
index = 40 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 41
index = 42 value = ZennoLab.CommandCenter.HtmlElement
index = 43 value = ZennoLab.CommandCenter.HtmlElement
index = 44 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 45
index = 46 value = ZennoLab.CommandCenter.HtmlElement
index = 47 value = ZennoLab.CommandCenter.HtmlElement
index = 48 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 49
index = 50 value = ZennoLab.CommandCenter.HtmlElement
index = 51 value = ZennoLab.CommandCenter.HtmlElement
index = 52 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 53
index = 54 value = ZennoLab.CommandCenter.HtmlElement
index = 55 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 56
index = 57 value = ZennoLab.CommandCenter.HtmlElement
index = 58 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 59
index = 60 value = ZennoLab.CommandCenter.HtmlElement
index = 61 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 62
index = 63 value = ZennoLab.CommandCenter.HtmlElement
index = 64 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 65
index = 66 value = ZennoLab.CommandCenter.HtmlElement
index = 67 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 68
index = 69 value = ZennoLab.CommandCenter.HtmlElement
index = 70 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 71
index = 72 value = ZennoLab.CommandCenter.HtmlElement
index = 73 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 74
index = 75 value = ZennoLab.CommandCenter.HtmlElement
index = 76 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 77
index = 78 value = ZennoLab.CommandCenter.HtmlElement
index = 79 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 80
index = 81 value = ZennoLab.CommandCenter.HtmlElement
index = 82 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 83
index = 84 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 85
index = 86 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 87
index = 88 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 89
index = 90 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 91
index = 92 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 93
index = 94 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 95
index = 96 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 97
index = 98 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 99
index = 100 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 101
index = 102 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 103
index = 104 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 105
index = 106 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 107
index = 108 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 109
index = 110 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 111
index = 112 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 113
index = 114 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 115
index = 116 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 117
index = 118 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 119
index = 120 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 121
index = 122 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 123
index = 124 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 125
index = 126 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 127
index = 128 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 129
index = 130 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 131
index = 132 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 133
index = 134 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 135
index = 136 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 137
index = 138 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 139
index = 140 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 141
index = 142 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 143
index = 144 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 145
index = 146 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 147
index = 148 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 149
index = 150 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 151
index = 152 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 153
index = 154 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 155
index = 156 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 157
index = 158 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 159
index = 160 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 161
index = 162 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 163
index = 164 value = ZennoLab.CommandCenter.HtmlElement
ошибка индекса 165
 
все что угодно, но пока только в переменную кладет. смысл в том что он сбоит
Ну если все что угодно, то почему не может сбоить...
Если конечный результат не важен, то можно глушить ошибку через трай кэч
 
незнаю что за var elText = colTexts.ElementAt(elnumber); но это не работает

вот надо так var elText = colTexts.Elements[elnumber];
Кажись вы правы. спасибо. Странно что мой вариант тоже работает но пару раз, на третий ломается :)
 
Кажись вы правы. спасибо. Странно что мой вариант тоже работает но пару раз, на третий ломается :-)
А лучше, вообще вот так
C#:
Развернуть Свернуть Копировать
var elText = colTexts.GetByNumber(elnumber);
т.к. метод именно для коллекции html элементов
 
  • Оценить
Реакции: luk911

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