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

luk911

Client
Регистрация
17.01.2013
Сообщения
1 542
Благодарностей
579
Баллы
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);
    }
 
Последнее редактирование:

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
конечно будет выбивать. последний цикл о 0 до рандома. а проверка сколько там элементов где ?
 

luk911

Client
Регистрация
17.01.2013
Сообщения
1 542
Благодарностей
579
Баллы
113
конечно будет выбивать. последний цикл о 0 до рандома. а проверка сколько там элементов где ?
а можно развернуто ? просто не совсем понял что есть о 0 до рандома.
проверка элементов выше есть.Screen Shot 2019-12-06 at 15.30.24.png

как бы он вылетает на ровном месте всего элементов 166 а вылетает на 88
 

SergSh

Client
Регистрация
10.05.2017
Сообщения
541
Благодарностей
395
Баллы
63

molotok

Client
Регистрация
17.04.2015
Сообщения
733
Благодарностей
358
Баллы
63
А что этот код должен делать?
 

luk911

Client
Регистрация
17.01.2013
Сообщения
1 542
Благодарностей
579
Баллы
113
Это когда из за рандома цикл запрашивает номер элемента которого нет. Что должен делать код?
на данной странице 166 элементов так что не понимаю где вы там 0 нашли. И count равен 166 по итогу.
 

luk911

Client
Регистрация
17.01.2013
Сообщения
1 542
Благодарностей
579
Баллы
113

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
незнаю что за var elText = colTexts.ElementAt(elnumber); но это не работает

вот надо так var elText = colTexts.Elements[elnumber];
 
  • Спасибо
Реакции: luk911

GrafSpell

Client
Регистрация
14.07.2017
Сообщения
30
Благодарностей
11
Баллы
8
то что у тебя там написано 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
 

molotok

Client
Регистрация
17.04.2015
Сообщения
733
Благодарностей
358
Баллы
63
все что угодно, но пока только в переменную кладет. смысл в том что он сбоит
Ну если все что угодно, то почему не может сбоить...
Если конечный результат не важен, то можно глушить ошибку через трай кэч
 

luk911

Client
Регистрация
17.01.2013
Сообщения
1 542
Благодарностей
579
Баллы
113
незнаю что за var elText = colTexts.ElementAt(elnumber); но это не работает

вот надо так var elText = colTexts.Elements[elnumber];
Кажись вы правы. спасибо. Странно что мой вариант тоже работает но пару раз, на третий ломается :-)
 

Metrix

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

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