Проверка открытия страницы.

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

one

Client
Регистрация
22.09.2015
Сообщения
7 019
Реакции
1 314
Баллы
113
Если работать через прокси, иногда бывает что прокси битый и страница не открылась, но экшен Переход на страницу отрабатывает по зеленому выходу. Отсюда сыпится вся работа шаблона.

Подскажите идеи, как с этим бороться? В моем случае шаблон броузерный.
 
Может кто подкинет снипет который будет переходить по указанному адресу и паралельно записывать хедер в переменную. Тогда можно будет отлавливать бед
 
Другой вариант перед экшеном Переход на страницу, GET'ом дергать страницу, обработать результат и если ответ 200, то идем дальше. Я такое придумал.
 
Другой вариант перед экшеном Переход на страницу, GET'ом дергать страницу, обработать результат и если ответ 200, то идем дальше. Я такое придумал.
Адаптируйте это под себя тыц
 
  • Оценить
Реакции: one
Переход на страницу, GET'ом дергать страницу
можно, но гет легче чем страница.
лучше конечно по возможности все на геты перевести, если нет, то сделать несколько проверок, постараться поймать все ошибки, которые происходят при переходе.
ИЛИ, наверно лучший варик будет, это проверять на какую-то фразу на нормально открывшейся странице. если фразы нет, то делаем цикл в 5-10 раз пока не появится, если не появляется, то скидываем акк и берем следующий.

ps \ я о медленных прокси говорю.
 
Просто проверяйте после загрузки страницы на наличие какого-то обязательного элемента. Если его нет - идём на повторную загрузку страницы.
Только в этом случае нужно добавить счетчик, чтобы не зациклить на этом этапе шаблон.
Так же можно кодом:
Код:
Развернуть Свернуть Копировать
HtmlElement he = null;
for (int i = 0; i<10; i++)
{
    var tab = instance.ActiveTab;
    tab.Navigate(@"УРЛ");
    if (tab.IsBusy) tab.WaitDownloading();
    he = tab.FindElementByAttribute("select","name","locationId","text",0);// прописать свои параметры поиска элемента
    if (!he.IsNull)
    {
            return "OK";
    }
}
return null;
 
  • Оценить
Реакции: Roman48, Sergodjan и one
А нельзя так сделать?
Берем url по которому переходим, засовываем его в if сравниваем его с текущим url который загрузился, по зеленой все норм отрабатывает, по красной выход на цикл
 
А нельзя так сделать?
Берем url по которому переходим, засовываем его в if сравниваем его с текущим url который загрузился, по зеленой все норм отрабатывает, по красной выход на цикл
урл будет нужный, а страница прежняя
 
  • Оценить
Реакции: ТРОН
Ещё есть отличный вариант, который я не тестировал, но всё хочу попробовать. В зенке с добавлением монитора трафика появились новые методы, для получения данных оттуда. Если оттуда удастся выцепить хеадер, то это вообще волшебно будет :)
Может кто-то заморочится и сделает сниппет:
https://help.zennolab.com/en/v5/zennoposter/5.11.7.0/webframe.html#topic1089.html
 
  • Оценить
Реакции: one
Ещё есть отличный вариант, который я не тестировал, но всё хочу попробовать. В зенке с добавлением монитора трафика появились новые методы, для получения данных оттуда. Если оттуда удастся выцепить хеадер, то это вообще волшебно будет :-)
Может кто-то заморочится и сделает сниппет:
https://help.zennolab.com/en/v5/zennoposter/5.11.7.0/webframe.html#topic1089.html
выдыхай, это методы разработчиков)
 
считать такую строку можно помнится так - instance.ActiveTab.MainDocument.URL, а далее уже проверить методом Contains на нужное содержимое
Благодарю, теперь отрабатывает как надо
upload_2017-12-13_15-14-35.png
 
В зенке с добавлением монитора трафика появились новые методы, для получения данных оттуда. Если оттуда удастся выцепить хеадер, то это вообще волшебно будет
Да, это будет очень волшебно. :)
 
Другой вариант перед экшеном Переход на страницу, GET'ом дергать страницу, обработать результат и если ответ 200, то идем дальше. Я такое придумал.
проверять 200 - не оч. надежный способ проверки, GET может пройти нормально, а качество прокси при прогурзке более массивных блоков данных может оставлять желать лучшего..
 
Последнее редактирование:
проверять 200 - не оч. надежный способ проверки, GET может пройти нормально, а качество прокси при прогурзке более массивных блоков данных может оставлять желать лучшего..
Скажите, а чем такой вариант не решение? Какие тут подводные камни есть?
upload_2017-12-13_15-34-21.png
 
Скажите, а чем такой вариант не решение? Какие тут подводные камни есть?
не знаю, я как то пробовал по такому принципу, заметил, что зенка оставляет старый урл при неудаче подгрузки нового..
если сейчас работает как надо, то почему бы и нет.. а так - хороший способ, вполне, я тоже его использовал как то..
 
Последнее редактирование:
  • Оценить
Реакции: ТРОН
Взял на вооружение это решение добавил эмуляцию Geo, Time и изменил сервер проверки прокси. Сервер проверки от зенки тупит безбожно, разработчики даже не пытаются исправить ситуацию. Столько проксей нормальных убивает (определяет как мертвые) этот проксичекер ихний что просто жуть! А снипет от Mikhail B. работает быстро. Кто Михаила увидит, передайте ему благодарность от меня! :-)
 
Последнее редактирование:
Проверка открытия страницы в ZennoPoster - это взять любое значение со страницы в конструкторе.
тэг a
Имя атрибута href (например если ссылки есть на странице)
Действие Get
Regexp . точка (любое значение)
 

Вложения

  • 123.jpg
    123.jpg
    462,4 KB · Просмотры: 61
Просто проверяйте после загрузки страницы на наличие какого-то обязательного элемента. Если его нет - идём на повторную загрузку страницы.
Только в этом случае нужно добавить счетчик, чтобы не зациклить на этом этапе шаблон.
Так же можно кодом:
Код:
Развернуть Свернуть Копировать
HtmlElement he = null;
for (int i = 0; i<10; i++)
{
    var tab = instance.ActiveTab;
    tab.Navigate(@"УРЛ");
    if (tab.IsBusy) tab.WaitDownloading();
    he = tab.FindElementByAttribute("select","name","locationId","text",0);// прописать свои параметры поиска элемента
    if (!he.IsNull)
    {
            return "OK";
    }
}
return null;
Можете, пожалуйста, подсказать, как вставить XPath, сишарп не знаю, разобраться очень тяжело, пробовал так, как ниже, не работает
C#:
Развернуть Свернуть Копировать
HtmlElement he = null;
for (int i = 0; i<10; i++)
{
    var tab = instance.ActiveTab;
    tab.Navigate(@project.Variables["url"].Value);
    if (tab.IsBusy) tab.WaitDownloading();
//    he = tab.FindElementByAttribute("select","name","locationId","text",0);// прописать свои параметры поиска элемента
    var elPass = tab.FindElementByXPath("//div[@class='ftitle']", 0);
   
    if (!he.IsNull)
    {
            return "OK";
    }
}
return null;
Разобрался, если кому то нужно будет так he = tab.FindElementByXPath("//a[@title='На главную']//img[1]", 0);
 

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