FindElemetsByXPath выдает ошибку

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 691
Баллы
113
Если это Вы на мой комментарий написали то у меня firefox52 стоит

Небольшой оффтоп, объясните пожалуйста в двух словах что значит, как это выглядит и зачем переписывать под хром. Дом модель же вроде в обоих браузерах одинакова. Реально пока не понимаю.
а эта тема вам разве не дает понять что если работает под файрфоксом не обязательно работает под хромом. а дом модели одинаковые :-)
а идея переписать возникла потому что все больше сайтов не работают уже под движком файрфокса. вот все пытаюсь сделать задел на будущее, но походу это в очень далеком будущем.
 

ial1408

Client
Регистрация
26.07.2016
Сообщения
191
Благодарностей
18
Баллы
18
а эта тема вам разве не дает понять что если работает под файрфоксом не обязательно работает под хромом. а дом модели одинаковые
Понять дает, но почему так - не понимаю, поэтому и спрашиваю. Многие пишут что надо переписывать под хром. Но что переписывать и как? Не существует же альтернативного кода под хром. Если я выполняю какой то метод то он един как для хрома так и для файерфокса.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 691
Баллы
113
Понять дает, но почему так - не понимаю, поэтому и спрашиваю. Многие пишут что надо переписывать под хром. Но что переписывать и как? Не существует же альтернативного кода под хром. Если я выполняю какой то метод то он един как для хрома так и для файерфокса.
у меня есть кликер. простой до ужаса. работает 24/7. надо было скликать рекламу на одном сайте. а она не отображается под движком файрфокса. попробовал под хромом. реклама есть. ну хорошо думаю. ставлю хром и запускаю кликер..... он даже до того сайта не добрался, заглючил на старте. начал копать.... а там все плохо. и эмуляция мышки по другому работает, и элементы в xpath запросто по иному интерпретирует, как то по другому элементы появляются в процессе загрузки.... то одно то другое. в результате шаблон написанный и отлаженный в файрфоксе может запросто не работать в хроме. ну и забагованность хрома просто поражает.
за ночь шаблоны на файрфокс в 45 потоков выдают 4-6 вылета по зависанию, тестовый шаблон на хроме делая то же самое 15-20 вылетов. ОДИН шаблон зависает в 5-6 раз чаще чем куча шаблонов. ОДИН КАРЛ !
тикет по зависанию шаба уже неделю висит в саппорте. и тишина, все норм. лучше бы свежий движок файрфокс внедрили, чем это убожество под названием хром толкать.
 
  • Спасибо
Реакции: ial1408

semafor

Client
Регистрация
27.12.2016
Сообщения
289
Благодарностей
400
Баллы
63
ial1408, добрался до ПК и твоего тестового шаба. По рецепту предыдущих ораторов сделал 2 варианта — на хроме и фф52. У меня ZP 5.29.0.0

Ну и добавил в код очистку браузера с закрытием вклвдок

C#:
instance.CloseAllTabs();
instance.ClearCache();
instance.ClearCookie();

Tab tab1 = instance.ActiveTab;
tab1.Navigate("https://autoresurs24.ru/parts/?mark=&raw_part_type=%D0%94%D0%B2%D0%B8%D0%B3%D0%B0%D1%82%D0%B5%D0%BB%D1%8C&part_type=&do_search=1&bibnet_page=1&perpage=30&is_hide_autorazborka=on");
tab1.WaitDownloading();
tab1.FindElementByXPath("//input[@value='показать запчасти']",0).Click(); // жмем на кнопку показать запчасти

//Ждем пока прогрузятся все запчасти
for (int l=0; l<30; l++){
    if (tab1.FindElementByXPath("//table[contains(@class,'goods')]/tbody/tr/th[text()='Цена']/parent::tr/following-sibling::tr",0).IsVoid){
        Thread.Sleep(200);
    }else break;
}

//Надо найти эту коллекцию
HtmlElementCollection colItems = tab1.FindElementsByXPath("//div[@id='bibinet_result']/table/tbody/tr");
project.SendInfoToLog("Всего элементов: " + colItems.Count.ToString(), true);

//Для теста делаем что бы понять видит ли зенка вообще таблицу в коллекции и в отдельном элементе
HtmlElementCollection colItemsTest = tab1.FindElementsByXPath("//div[@id='bibinet_result']/table"); // в коллекции не видит таблиц
project.SendInfoToLog("Всего таблиц: " + colItemsTest.Count.ToString(),true);

if (tab1.FindElementByXPath("//div[@id='bibinet_result']/table",0).IsVoid){ // в отдельном элементе видет таблицу
    project.SendInfoToLog("Нету таблицы",true);
}else{
    project.SendInfoToLog("Есть таблица",true);
}
Результат (прокси не использовал, профили каждый раз не генерил):

фф52:
Всего элементов 31;
Всего таблиц 1;
Есть таблица
Результат воспроизводится все 20 раз.

Chrome:
Всего элементов 31;
Всего таблиц 1;
Есть таблица
Результат воспроизводится все 20 раз.
 
Последнее редактирование:
  • Спасибо
Реакции: ial1408

ial1408

Client
Регистрация
26.07.2016
Сообщения
191
Благодарностей
18
Баллы
18

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 691
Баллы
113
ial1408, добрался до ПК и твоего тестового шаба. По рецепту предыдущих ораторов сделал 2 варианта — на хроме и фф52. У меня ZP 5.29.0.0
вот я про тоже, ждешь от обновлений улучшения, а по факту хрень с постным маслом
 
  • Спасибо
Реакции: ial1408

semafor

Client
Регистрация
27.12.2016
Сообщения
289
Благодарностей
400
Баллы
63
вот я про тоже, ждешь от обновлений улучшения, а по факту хрень с постным маслом
Ну я поэтому и не тороплюсь с обновами — пока баги не подчистят, лучше не дергаться... Ну и так не только с зенкой ведь, любой софт взять, хоть ОСь, хоть CMS сайта (много с джумлой дела имел — там обновы вообще отдельная песня), хоть прикладное ПО...
 

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