пропадают элементы коллекции

elakeri

Client
Регистрация
23.07.2018
Сообщения
199
Благодарностей
10
Баллы
18
Не получается реализовать цикл.. нахожу коллекцию, по элементно прохожу и в цикле надо нажать на элемент , чтобы спарсить данные.., но на втором шаге второго элемента не находит.., даже если в теле цикла все возвращаешь в исходное положение.. заново находит тем же икспасом туже коллекцию.. как быть
 

TwistDanceR

Client
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
1) обязательно ли нажимать на элемент чтобы парсить?
2) после нажатия если появляются новые элементы - нужно парсить новую коллекцию и работать уже с ней.
3) примеры скидывайте - быстрее будет
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
Не получается реализовать цикл.. нахожу коллекцию, по элементно прохожу и в цикле надо нажать на элемент , чтобы спарсить данные.., но на втором шаге второго элемента не находит.., даже если в теле цикла все возвращаешь в исходное положение.. заново находит тем же икспасом туже коллекцию.. как быть
раз находит туже коллекцию значит надо в организовать счетчик в переменной, в начале цикла формировать коллекцию, из колекции по счетчику брать элемент, работать с ним и с тем что возникает по клику и заного на начало цикла все пересоздать и увеличить счетчик, проверить на выходя за границы колекции и в работу по кругу :-)
 

elakeri

Client
Регистрация
23.07.2018
Сообщения
199
Благодарностей
10
Баллы
18
раз находит туже коллекцию значит надо в организовать счетчик в переменной, в начале цикла формировать коллекцию, из колекции по счетчику брать элемент, работать с ним и с тем что возникает по клику и заного на начало цикла все пересоздать и увеличить счетчик, проверить на выходя за границы колекции и в работу по кругу :-)
так а почему они пропадают?, я же не пересоздаю ее, не очищаю, при пересоздании она получается такая же, куда девается?
 

Phoenix78

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

elakeri

Client
Регистрация
23.07.2018
Сообщения
199
Благодарностей
10
Баллы
18
вообще без понятия куда оно все девается. в отладчике пошагово отладку надо делать, смотреть всю коллекцию, каждый элемент. долго и скрупулезно. можно всю коллекцию выгружать в тестовый массив и там смотреть что происходит если в отладчик лезть неохота. кстати а как коллекцию обходите и получаете доступ к элементам ? через индекс или получить каждый элемент ?
отладчик в зенке вот такой http://joxi.ru/l2Zp0DoHzbo4Rr
по индексу пробовал, поэлементно тоже
 

TwistDanceR

Client
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
отладчик в зенке вот такой http://joxi.ru/l2Zp0DoHzbo4Rr
по индексу пробовал, поэлементно тоже
Ты коллекцию в цикле объявляешь или вне цикла?
P.S. Отладчик для меня - ничто, в моей версии (35) его даже нет)) Я всегда лезу код смотреть. А лучше всего , повторюсь опять - прикладывать примеры.
Ошибка "object reference not set to an instance of an object" - значит что элемент тупо не найден, а это уже - другой вопрос. Прикладывай примеры кода, а ещё лучше - ещё и страницу. Так хоть понятнее будет, с чем имеем дело.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
Ты коллекцию в цикле объявляешь или вне цикла?
P.S. Отладчик для меня - ничто, в моей версии (35) его даже нет)) Я всегда лезу код смотреть. А лучше всего , повторюсь опять - прикладывать примеры.
Ошибка "object reference not set to an instance of an object" - значит что элемент тупо не найден, а это уже - другой вопрос. Прикладывай примеры кода, а ещё лучше - ещё и страницу. Так хоть понятнее будет, с чем имеем дело.
ну да. код обхода колекции увидеть бы. да и как колекция объявляется тоже.
 

elakeri

Client
Регистрация
23.07.2018
Сообщения
199
Благодарностей
10
Баллы
18
Ты коллекцию в цикле объявляешь или вне цикла?
P.S. Отладчик для меня - ничто, в моей версии (35) его даже нет)) Я всегда лезу код смотреть. А лучше всего , повторюсь опять - прикладывать примеры.
Ошибка "object reference not set to an instance of an object" - значит что элемент тупо не найден, а это уже - другой вопрос. Прикладывай примеры кода, а ещё лучше - ещё и страницу. Так хоть понятнее будет, с чем имеем дело.
ты что такой тугой, хватит уже тут помогать, в прошлый раз с 10 го раза дошло, что коллекция есть, дебагер не работает.., опять за свое.. и пример тебе уже скидывал... занимайся своими делами, помощник
 

TwistDanceR

Client
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
ты что такой тугой, хватит уже тут помогать, в прошлый раз с 10 го раза дошло, что коллекция есть, дебагер не работает.., опять за свое.. и пример тебе уже скидывал... занимайся своими делами, помощник
У меня хотя бы с головой проблем нет, товарищ умный) Грубость твоя лишняя и оффтоповая. Хочешь сраться пиши в личку, но ты не по адресу, чучело )
 

elakeri

Client
Регистрация
23.07.2018
Сообщения
199
Благодарностей
10
Баллы
18
У меня хотя бы с головой проблем нет, товарищ умный) Грубость твоя лишняя и оффтоповая. Хочешь сраться пиши в личку, но ты не по адресу, чучело )
с головой походу проблемы у тебя )))
пример кода я сразу послал, как спросил, там все ясно и понятно.., через два дня ты спросил, -"Ты коллекцию в цикле объявляешь или вне цикла? "..., во первых код есть высланный, во вторых я не очень понимаю, как можно в цикле, который перебирает элементы коллекции, объявить коллекцию.. в третьих был уже топик про ошибку "object reference not set to an instance of an object" , на протяжении которого тебе объясняли, что элементы в кол-ии есть, не работает дебагер., и вроде как за два дня ты там покумекал и все понял, но приходишь опять, и начинаешь заново писать -"Ошибка "object reference not set to an instance of an object" - значит что элемент тупо не найден, а это уже - другой вопрос. ". Так вот я попросил тебя не помогать больше, чтоб не превратилось все, как в прошлый раз, читать твой бред, попытки ответа на вопрос, который никто не задавал. И я тебя не оскорблял, исчезни короче
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
с головой походу проблемы у тебя )))
пример кода я сразу послал, как спросил, там все ясно и понятно.., через два дня ты спросил, -"Ты коллекцию в цикле объявляешь или вне цикла? "..., во первых код есть высланный, во вторых я не очень понимаю, как можно в цикле, который перебирает элементы коллекции, объявить коллекцию..
где код то ? в этой ветке нет кода ?
ну раз такие проблемы значит надо объявлять коллекцию внутри цикла, даже если это непонятно на первый взгляд.
Перед началом цикла получается коллекция, узнается ее количество элементов , записывается в переменную sum
делается цикл for (int i = 0; i < sum; i++)
и уже внутри цикла еще раз получается коллекция
и только потом получается элемент colLinks.Elements;
 

TwistDanceR

Client
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
Апплодирую стоя)
Слушай, ты какой то мутный. тебе помочь пытаются, а ты строишь из себя фифу.
Тебе уже 2 человека сказали код скинь. это что ли по твоему код ?
отладчик в зенке вот такой http://joxi.ru/l2Zp0DoHzbo4Rr
Больше от тебя не было ничего.
Короче не напрягайся, тебе уже достаточно подсказали, разбирайся сам.
 

TwistDanceR

Client
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
Слушай, ты какой то мутный. тебе помочь пытаются, а ты строишь из себя фифу.
Тебе уже 2 человека сказали код скинь. это что ли по твоему код ?

Больше от тебя не было ничего.
Короче не напрягайся, тебе уже достаточно подсказали, разбирайся сам.
Это не мой тред) и я без сарказма, в этой ветке именно кода и не было
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
  • Спасибо
Реакции: elakeri

Phoenix78

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

elakeri

Client
Регистрация
23.07.2018
Сообщения
199
Благодарностей
10
Баллы
18
для понимания )))
не работающий код

C#:
Tab tab = instance.ActiveTab;
tab.Navigate("https://spb.hh.ru/search/resume?area=2&clusters=true&exp_period=all_time&logic=normal&pos=full_text&from=employer_index_header&text=");
if (tab.IsBusy) tab.WaitDownloading();

//используя XPath находим елементы пол
HtmlElementCollection FIltersMale = tab.FindElementsByXPath("//div[@class='clusters-group clusters-group_expand'][11]/div[@class='clusters-group__items']/ul[@class='clusters-list']/li[@class='clusters-list__item']/a[@class='clusters-value']");
foreach (HtmlElement el_FIltersMale in FIltersMale){
project.Variables["Proverka"].Value = el_FIltersMale.InnerText;
project.Variables["Proverka1"].Value = el_FIltersMale.FindChildByXPath(".//span[@class = 'clusters-value__count']",0).InnerText;
project.Variables["Proverka2"].Value = Convert.ToString(FIltersMale.Count);
el_FIltersMale.Click();

if (tab.IsBusy) tab.WaitDownloading();
Thread.Sleep(2000);
// тут делаю свои грязные делишки.. и потом даж если вернуть обратно, коллекции уже нет
HtmlElement el_Cancel = tab.FindElementByXPath("//div[@class='clusters-group clusters-group_expand'][11]/div[@class='clusters-group__items']/ul[@class='clusters-list']/li[@class='clusters-list__item']/a[@class='clusters-value clusters-value_selected']/span[@class='clusters-value__close']",0);
el_Cancel.Click();

}

работающий код

C#:
Tab tab = instance.ActiveTab;
tab.Navigate("https://spb.hh.ru/search/resume?area=2&clusters=true&exp_period=all_time&logic=normal&pos=full_text&from=employer_index_header&text=");
if (tab.IsBusy) tab.WaitDownloading();
//используя XPath находим елементы пол
HtmlElementCollection FIltersMale = tab.FindElementsByXPath("//div[@class='clusters-group clusters-group_expand'][11]/div[@class='clusters-group__items']/ul[@class='clusters-list']/li[@class='clusters-list__item']/a[@class='clusters-value']");
int sum = FIltersMale.Count;
for ( int i=0; i<sum; i++) {
    HtmlElementCollection FIltersMale_1 = tab.FindElementsByXPath("//div[@class='clusters-group clusters-group_expand'][11]/div[@class='clusters-group__items']/ul[@class='clusters-list']/li[@class='clusters-list__item']/a[@class='clusters-value']");
    var el = FIltersMale_1.Elements[i];
    project.Variables["Proverka"].Value = el.InnerText;
    project.Variables["Proverka1"].Value = el.FindChildByXPath(".//span[@class = 'clusters-value__count']",0).InnerText;
    project.Variables["Proverka2"].Value = Convert.ToString(FIltersMale_1.Count);
    el.Click();

    if (tab.IsBusy) tab.WaitDownloading();
    Thread.Sleep(2000);
    // тут делаю свои грязные делишки.. и потом даж если вернуть обратно, коллекции уже нет
    HtmlElement el_Cancel = tab.FindElementByXPath("//div[@class='clusters-group clusters-group_expand'][11]/div[@class='clusters-group__items']/ul[@class='clusters-list']/li[@class='clusters-list__item']/a[@class='clusters-value clusters-value_selected']/span[@class='clusters-value__close']",0);
    el_Cancel.Click();  
}
Спасибо
Phoenix78
 
  • Спасибо
Реакции: TwistDanceR

TwistDanceR

Client
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
для понимания )))
не работающий код

C#:
Tab tab = instance.ActiveTab;
tab.Navigate("https://spb.hh.ru/search/resume?area=2&clusters=true&exp_period=all_time&logic=normal&pos=full_text&from=employer_index_header&text=");
if (tab.IsBusy) tab.WaitDownloading();

//используя XPath находим елементы пол
HtmlElementCollection FIltersMale = tab.FindElementsByXPath("//div[@class='clusters-group clusters-group_expand'][11]/div[@class='clusters-group__items']/ul[@class='clusters-list']/li[@class='clusters-list__item']/a[@class='clusters-value']");
foreach (HtmlElement el_FIltersMale in FIltersMale){
project.Variables["Proverka"].Value = el_FIltersMale.InnerText;
project.Variables["Proverka1"].Value = el_FIltersMale.FindChildByXPath(".//span[@class = 'clusters-value__count']",0).InnerText;
project.Variables["Proverka2"].Value = Convert.ToString(FIltersMale.Count);
el_FIltersMale.Click();

if (tab.IsBusy) tab.WaitDownloading();
Thread.Sleep(2000);
// тут делаю свои грязные делишки.. и потом даж если вернуть обратно, коллекции уже нет
HtmlElement el_Cancel = tab.FindElementByXPath("//div[@class='clusters-group clusters-group_expand'][11]/div[@class='clusters-group__items']/ul[@class='clusters-list']/li[@class='clusters-list__item']/a[@class='clusters-value clusters-value_selected']/span[@class='clusters-value__close']",0);
el_Cancel.Click();

}

работающий код

C#:
Tab tab = instance.ActiveTab;
tab.Navigate("https://spb.hh.ru/search/resume?area=2&clusters=true&exp_period=all_time&logic=normal&pos=full_text&from=employer_index_header&text=");
if (tab.IsBusy) tab.WaitDownloading();
//используя XPath находим елементы пол
HtmlElementCollection FIltersMale = tab.FindElementsByXPath("//div[@class='clusters-group clusters-group_expand'][11]/div[@class='clusters-group__items']/ul[@class='clusters-list']/li[@class='clusters-list__item']/a[@class='clusters-value']");
int sum = FIltersMale.Count;
for ( int i=0; i<sum; i++) {
    HtmlElementCollection FIltersMale_1 = tab.FindElementsByXPath("//div[@class='clusters-group clusters-group_expand'][11]/div[@class='clusters-group__items']/ul[@class='clusters-list']/li[@class='clusters-list__item']/a[@class='clusters-value']");
    var el = FIltersMale_1.Elements[i];
    project.Variables["Proverka"].Value = el.InnerText;
    project.Variables["Proverka1"].Value = el.FindChildByXPath(".//span[@class = 'clusters-value__count']",0).InnerText;
    project.Variables["Proverka2"].Value = Convert.ToString(FIltersMale_1.Count);
    el.Click();

    if (tab.IsBusy) tab.WaitDownloading();
    Thread.Sleep(2000);
    // тут делаю свои грязные делишки.. и потом даж если вернуть обратно, коллекции уже нет
    HtmlElement el_Cancel = tab.FindElementByXPath("//div[@class='clusters-group clusters-group_expand'][11]/div[@class='clusters-group__items']/ul[@class='clusters-list']/li[@class='clusters-list__item']/a[@class='clusters-value clusters-value_selected']/span[@class='clusters-value__close']",0);
    el_Cancel.Click();
}
Спасибо
Phoenix78
Жаль после драки кулаками не машут) Столкнулся с той же проблемой - обратился сюда и увидел что нужно - коллекция ВНУТРИ цикла. Все сразу решилось. И это был один из моих первых вопросов о том как у тебя все было устроено) Спасибо за нитку.
 

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