Иногда бывает сбой: страница как-будто загрузилась в браузере, а на самом деле она пустая ...

zivillos

Пользователь
Регистрация
27.02.2018
Сообщения
77
Благодарностей
3
Баллы
8
Иногда бывает сбой: страница как-будто загрузилась в браузере, а на самом деле она пустая ...
URL такой, который нужно, но по факту страница пустая...
Как прописать проверку, что страница загрузилась полностью?

Такие вещи как

1)
System.Threading.Thread.Sleep(500);
instance.ActiveTab.WaitDownloading();

и

2)
HtmlElement he;
for(int i=0;i<30;i++) //количество циклов по поиску элемента
{
he = instance.ActiveTab.FindElementByAttribute("h2","class","title","regexp",0);
if(!he.IsVoid)
{
break;
}
System.Threading.Thread.Sleep(3000); //Время в милисекундах
}

не помогают...
 
  • Спасибо
Реакции: orka13

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 417
Благодарностей
5 454
Баллы
113

zivillos

Пользователь
Регистрация
27.02.2018
Сообщения
77
Благодарностей
3
Баллы
8
как проверить загрузилось ли всё на странице?
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 417
Благодарностей
5 454
Баллы
113

Шива

Client
Регистрация
05.02.2018
Сообщения
1 088
Благодарностей
341
Баллы
83
Взять любой элемент конструктором и проверять на наличие.
А как проверить загрузку страницы если она например не привязана к серверу.
Просто ничего не происходит.
 

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 417
Благодарностей
5 454
Баллы
113
А как проверить загрузку страницы если она например не привязана к серверу.
Просто ничего не происходит.
Не совсем понял вопроса. Если страница не загрузилась, ну значить не загрузилась, мало ли по какой причине)))
 

Шива

Client
Регистрация
05.02.2018
Сообщения
1 088
Благодарностей
341
Баллы
83

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 417
Благодарностей
5 454
Баллы
113
Вот к примеру есть урл.
http://frefefefefewr3.com
Если перейти по нему ничего не произойдет.
Я хочу это понять как то
Ну код значит пустой будет, ответ пустой. Что тут проверять мне лично не понятно. Если например нужно на наличе элемента проверить, то делается цикл например в 10 попыток по 10 сек, если ничего не загрузилось, то либо инет упал, либо просто страница "не привязана к серверу."
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 448
Благодарностей
9 142
Баллы
113
если страница не загрузилась (несуществующий сайт или проблемы с сервером), то можно производить проверку переменной окружения Page.Url
либо там будет about:blank, либо предыдущий урл..

upload_2018-4-10_21-57-33.png
 

zivillos

Пользователь
Регистрация
27.02.2018
Сообщения
77
Благодарностей
3
Баллы
8
Это какой-то сбой видимо ... потому как URL бывает с адресом, а страница пустая...
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 456
Благодарностей
5 914
Баллы
113
Проверка на наличие текста обычно делается в таких случаях...
Правый клик в браузере>Проверка на наличе текста в контекстном меню.
 

Шива

Client
Регистрация
05.02.2018
Сообщения
1 088
Благодарностей
341
Баллы
83
Проверка на наличие текста обычно делается в таких случаях...
Правый клик в браузере>Проверка на наличе текста в контекстном меню.
А если мы не знаем какой текст на странице будет ?
А текст который мы будем искать уже есть на странице?
 

VladZen

Administrator
Команда форума
Регистрация
05.11.2014
Сообщения
22 456
Благодарностей
5 914
Баллы
113
А если мы не знаем какой текст на странице будет ?
А текст который мы будем искать уже есть на странице?
Я лишь подсказал один из вариантов решения. Это в целом задача на вашу логику. Найдите атрибут, по которому можно проверять загрузилась ли страница или нет, не важно текст это или элемента какой-то или картинка... все инструменты для этого есть в программе.
 

Rimen

Client
Регистрация
28.10.2019
Сообщения
406
Благодарностей
254
Баллы
63
если страница не загрузилась (несуществующий сайт или проблемы с сервером), то можно производить проверку переменной окружения Page.Url
либо там будет about:blank, либо предыдущий урл..

Посмотреть вложение 28905
Здесь ответ кроется.
Проверка IF с кодом:
Код:
'{-Page.Url-}'=='about:blank'
И дальше выход по успеху = перезагрузка страницы, по неудаче = продолжение цикла дальше
 
  • Спасибо
Реакции: PlayerT7 и Astraport

Phoenix78

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

JurgenZolle

Client
Регистрация
19.09.2018
Сообщения
135
Благодарностей
20
Баллы
18
101.jpg
 
  • Спасибо
Реакции: Mikhail B.

orka13

Client
Регистрация
07.05.2015
Сообщения
2 177
Благодарностей
2 184
Баллы
113
Так видно же что это стандартный фактически пустой DOM-контейнер самого ProjectMaker. Вот чуть подправил код из стартпоста чтобы ловил признак наличия тайтла в коде или выходил по ошибке. Тогда он такой DOM отловит как ошибочный:
C#:
HtmlElement he;
//количество циклов по поиску элемента:
for(int i=0;i<30;i++) {
        he = instance.ActiveTab.FindElementByXPath("//title" , 0);
        if(!he.IsVoid) {
            return "все ок, нашли заголовок на странице, заканчиваем цикл";
        }
        System.Threading.Thread.Sleep(3000); //Время в миллисекундах паузы каждого цикла
}
throw new Exception("Выходим по ошибке, так как не дождались загрузки заголовка после всех циклов");
И между загрузками страниц не забывайте обнулять в браузере результаты от предыдущей страницы, чтобы не было ситуации когда прокси умер, и у вас остается старый DOM-код и вы зря в нем парсите:
 

ukrainec2014

Client
Регистрация
12.05.2017
Сообщения
351
Благодарностей
52
Баллы
28
А кто подскажет как проверить загрузились ли картинки на странице?
страница загружается но иногда как будто стоит тумблер картинки офф.. хотя в другой вкладке все норм...

как проверить загрузились ли картинки? (потому что если не загружаются картинки то капчу не разгадывает капмонстр)

 

orka13

Client
Регистрация
07.05.2015
Сообщения
2 177
Благодарностей
2 184
Баллы
113
А кто подскажет как проверить загрузились ли картинки на странице?
страница загружается но иногда как будто стоит тумблер картинки офф.. хотя в другой вкладке все норм...

как проверить загрузились ли картинки? (потому что если не загружаются картинки то капчу не разгадывает капмонстр)

Тоже подобное ловлю. Ничего лучше как проверку через монитор трафика не придумал. Вот код. Создайте сначала таблицу в шаблоне "Таблица 1", чтобы понимать что в мониторе перехватили. И учитывайте что после каждого выполнения кода монитор очищается.
Материал из справки по теме:
GetTraffic Method (Tab)
C#:
// Добавляем в таблицу результат монитора
IZennoTable table = project.Tables["Таблица 1"];
// результат кода по умолчанию:
string Marker = "НЕ прогрузили картинку капчи с момента последней проверки монитора";

// get list of requests
var list = instance.ActiveTab.GetTraffic();
// print count of items, it will be more than 0
project.SendInfoToLog("First count of traffic elements = " + list.Count());
// get some data from items and log it
foreach(var t in list) {
    project.SendInfoToLog(string.Format("Url: {0}\r\n Method: {1}\r\n Result: {2}", t.Url, t.Method, t.ResultCode), false);
    // Добавляем в таблицу для наглядности:
    table.AddRow(new [] { t.Url, t.Method, t.ResultCode.ToString() });
    //проверяем строку на признаки загрузки картинки рекапчи (по части урла и успешному коду ответа 200):
    if (t.Url.Contains("recaptcha/api2/payload?p=") && t.ResultCode == 200) {
        Marker = "прогрузили картинку капчи с момента последней проверки монитора";
    }
}
return Marker;
 
Последнее редактирование:
  • Спасибо
Реакции: Zedx и ukrainec2014

Gorm

Client
Регистрация
27.07.2013
Сообщения
59
Благодарностей
12
Баллы
8
Это самый отвратительный баг ZennoPoster.. Грузишь страницу по адресу и видишь, что контент вроде есть, но дублирует старую страницу. Раньше списывал на кривые прокси, типа результат кешируют и отдают уже статику.. А оказывается я не один такой. И этой проблеме ГОДА! Причем мне кажется в более ранней версии Zenno честно отдавал ошибку (год 2012-2014).

Уважаемые разработчики, я не хочу проверять свою логику, не хочу городить огород сравнивая адреса страниц, контрольные суммы страниц и т.п. говнометоды (вы обратите внимание, человек выше проверяет монитором трафика! О_о ). Я уже достаточно времени и нервов оставил парся тысячами дубли страниц.

Мы хотим возврат кода ответа веб-сервера, если таковой есть, либо честное срабатывание FAIL для данного экшена, если никакого кода ответа веб-сервера нет (Connection time out и подобные проблемы)!!! Ну если кастомное conection time задавать разрешите - то вообще круто.

ИМХО! Сделать не сложно и существующую архитектуру не ломает.
 
Последнее редактирование:

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
Это самый отвратительный баг ZennoPoster.. Грузишь страницу по адресу и видишь, что контент вроде есть, но дублирует старую страницу. Раньше списывал на кривые прокси, типа результат кешируют и отдают уже статику.. А оказывается я не один такой. И этой проблеме ГОДА! Причем мне кажется в более ранней версии Zenno честно отдавал ошибку (год 2012-2014).

Уважаемые разработчики, я не хочу проверять свою логику, не хочу городить огород сравнивая адреса страниц, контрольные суммы страниц и т.п. говнометоды (вы обратите внимание, человек выше проверяет монитором трафика! О_о ). Я уже достаточно времени и нервов оставил парся тысячами дубли страниц.

Мы хотим возврат кода ответа веб-сервера, если таковой есть и честное срабатывание FAIL для данного экшена, если никакого кода ответа веб-сервера нет (Connection time out и подобные проблемы)!!! Ну если кастомное conection time задавать разрешите - то вообще круто.

ИМХО! Сделать не сложно и существующую архитектуру не ломает.
я извиняюсь, а у вас версия зенки какая? просто у меня на 7.2.0.0 если траблы с инетом то контент пропадает и появляется белый экран с кодом ошибки
 

Gorm

Client
Регистрация
27.07.2013
Сообщения
59
Благодарностей
12
Баллы
8
5.43.0.0, доступно обновление 5.47.0.0, но беглый просмотр changelog изменений в этой части не выхватил.

А какой может быть код ошибки, если нет инета? Ответа веб-сервера ведь тоже нет..
 

Phoenix78

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

А какой может быть код ошибки, если нет инета? Ответа веб-сервера ведь тоже нет..
вот такое вылазиет щас.

65644
 

Gorm

Client
Регистрация
27.07.2013
Сообщения
59
Благодарностей
12
Баллы
8
Ну давайте погоняем)) В первой пятерке примерно первые 2 - Tor, остальные молчат.

И в целом примерно 50/50. Очень примерно.. то есть может быть и 70/30.

Но мне интересно, что покажет у вас. Я пока огород с проверкой URL нагорожу, покажу точный правильный ответ.
 

Вложения

Phoenix78

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

И в целом примерно 50/50. Очень примерно.. то есть может быть и 70/30.

Но мне интересно, что покажет у вас. Я пока огород с проверкой URL нагорожу, покажу точный правильный ответ.
в вашем шаблоне движок файрфокс стоит. его уже давно не обновляли и не будут обновлять. поставил хром и вот результат.

65652
 
  • Спасибо
Реакции: Gorm

Gorm

Client
Регистрация
27.07.2013
Сообщения
59
Благодарностей
12
Баллы
8
83/11 - на глюке
53/41 - с обработкой глюка

Решение сравнивать URL само по себе отвратительно, ведь могут быть редиректы.. И тут сюрприз - редирект тоже кеширует. А если редирект на туже самую страницу? Короче, картина называется "удачного парсинга"))

Во вложении вариант со сравнением URL с целью избежать дубли.
 

Вложения

  • 26,6 КБ Просмотры: 73
  • 1,6 КБ Просмотры: 79
Последнее редактирование:

Gorm

Client
Регистрация
27.07.2013
Сообщения
59
Благодарностей
12
Баллы
8
ок, попробуем Chrome, спасибо.
 

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