Дождаться загрузки страницы.

likeviewer

Client
Регистрация
07.02.2020
Сообщения
48
Благодарностей
4
Баллы
8
Когда в табе инициируется переход по какому-то линку, то кубик понимает, что идет загрузка, показываются ее этапы, все отлично. Когда инициируется действие типа клик на кнопку, зено не всегда понимает (если вообще понимает), что после клика следует загрузка, которую тоже следует дождаться. Есть ли способ намекнуть ей об этом? Не хочется пихать множество кубиков с паузами, продлевая при этом время выполнения каждого инстанса. На форуме уже было предложено решение с помощью с#, но оно не срабатывает. Спасибо заранее!
 
  • Спасибо
Реакции: Meteorburn

Phoenix78

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

VerBin

Client
Регистрация
28.05.2016
Сообщения
555
Благодарностей
454
Баллы
63
Если сайт использует ajax можно попробывать следующее:
Вставить в начале шаблона кубик настройки:
52678


52679
 

likeviewer

Client
Регистрация
07.02.2020
Сообщения
48
Благодарностей
4
Баллы
8
что за решение ? есть в снипетах код дождаться появления элемента.
Добрый день! Предлагалось вот такое решение. Не подощло:/

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

Скорее всего проблема решена следующий автором.
 

likeviewer

Client
Регистрация
07.02.2020
Сообщения
48
Благодарностей
4
Баллы
8
Если сайт использует ajax можно попробывать следующее:
Вставить в начале шаблона кубик настройки:
Посмотреть вложение 52678

Посмотреть вложение 52679
Спасибо, скорее всего этот метод сработал в моей ситуации. На будущее не подскажете, как образом можно определять, на Ajax сайт или нет?
 

VerBin

Client
Регистрация
28.05.2016
Сообщения
555
Благодарностей
454
Баллы
63
Спасибо, скорее всего этот метод сработал в моей ситуации. На будущее не подскажете, как образом можно определять, на Ajax сайт или нет?
Все современные сайты используют ajax.
Это по сути javascript обменивается данными с сервером и на лету изменяет содержимое страницы без перехода на другую страницу.
По сути настройка выше определяет, если идет обмен данными с сервером во время загруженной страницы, значит надо ожидать, иначе можно выполнять действия.
Второй вариант это устанавливать свои проверки с ожиданием определенного элемента по таймеру, если элемент не появился в течении времени, значит что-то пошло не так.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 676
Баллы
113
Каждому свое. я например всегда ставлю галочку игнорировать AJAX. Потому что сеть интернет это очень нестабильное место. И если ориентироваться только на статус загрузки, то можно не угадать. например связь не очень на текущем прокси, первый скрипт загрузил первую часть элементов и выставил готовность, зенка словила статус и пустила шаблон дальше, а нужный нам элемент нечаянно оказался во второй волне подгрузки, которая в силу тормознутости/нестабильности сети стартовала с некоторой задержкой. и на выходе получаем недогруженную страницу на момент поиска элемента, а через 1-2 секунды подгружается нужный элемент , но момент упущен.
этот вариант
System.Threading.Thread.Sleep(500);
instance.ActiveTab.WaitDownloading();
лучше вообще не использовать. потому как 500 миллисекунд явно мало для тормознутых прокси, а выставлять 6-12 секунд постоянной паузы это непозволительная роскошь.
WaitDownloading вообще может завесить шаблон на очень долго. опять же при плохой связи загрузка , а тем более AJAX может грузиться до бесконечности. можно ограничить настройкой таба, например 16 секунд, но опять же это превращается в рулетку. например нам нужен элемент который грузиться почти сразу на исходном html , но тормознутый/глючный прокси так затягивает конечную загрузку страницы + активизировался AJAX и получается что вроде страница загрузилась, а мы тупо ждем таймаут загрузки в 16 с. тоже непозволительная роскошь.
Самый лучший метод это по факту ждать появления нужного элемента в течении заданного интервала. если появился то сразу дальше, после таймаута направлять шаблон на отработку отсутствия элемента.
писал же в снипетах есть решения, вот почему никто не читает и не пользуется поиском ?
вот решение
еще одно, но там чуть доработать надо. ниже там написано как.
вот и вот и вот
все построены по одной логике.
можно использовать ожидание в стандартном кубике, но только при условии, что красный выход не будет занят. иначе сразу перестает работать, это такой баг в зенке, с очень длинной бородой кстати. поэтому лучше немного поразбираться, но сделать на C#
 

devas111

Client
Регистрация
28.01.2012
Сообщения
202
Благодарностей
9
Баллы
18
Потерялся в C#. Проблема с ожиданием загрузки страницы. Страница ещё не загрузилась а код в C# (ниже указанный отработал)
То есть всплывает форма регистрации, курсор мигает. Но после загрузки страницы курсор исчезает и теперь не вставляет мыло для реги. Как вставить код для ожидания полной загрузки страницы в C#
Мой код:
Tab tab = instance.ActiveTab;

string email = project.Variables["email"].Value;

// input text
tab.FindElementByXPath("//input[@id='join_neu_email_field']", 0).Click();
instance.SendText(email, 0);
Просмотрел все вышеуказанные варианты, но увы мат часть не учил.
Рега тут
 

molotok

Client
Регистрация
17.04.2015
Сообщения
733
Благодарностей
358
Баллы
63
Потерялся в C#. Проблема с ожиданием загрузки страницы. Страница ещё не загрузилась а код в C# (ниже указанный отработал)
То есть всплывает форма регистрации, курсор мигает. Но после загрузки страницы курсор исчезает и теперь не вставляет мыло для реги. Как вставить код для ожидания полной загрузки страницы в C#
Мой код:
Tab tab = instance.ActiveTab;

string email = project.Variables["email"].Value;

// input text
tab.FindElementByXPath("//input[@id='join_neu_email_field']", 0).Click();
instance.SendText(email, 0);
Просмотрел все вышеуказанные варианты, но увы мат часть не учил.
Рега тут
C#:
Tab tab = instance.ActiveTab;
tab.WaitDownloading();// Ожидаем прогрузку страницы

string email = project.Variables["email"].Value;

// input text
tab.FindElementByXPath("//input[@id='join_neu_email_field']", 0).Click();
instance.SendText(email, 0);
 
  • Спасибо
Реакции: devas111

devas111

Client
Регистрация
28.01.2012
Сообщения
202
Благодарностей
9
Баллы
18
Очень оперативно. Вроде всё работает. Конечно прокся живая попалась. Потестим. Огромное СПСБ molotok.
 

devas111

Client
Регистрация
28.01.2012
Сообщения
202
Благодарностей
9
Баллы
18
Понаблюдал. Страница хитрая. И если проксик дохлятинка, то регистрация не проходит, или до конца не доходит.
Не дожидается в данном случае "tab.WaitDownloading();// Ожидаем прогрузку страницы" полной загрузки страницы
Т.е страница ещё с красным кружочком, а форма реги уже открылась. Сказал что страница хитрая - может загрузится до конца и пару раз заново прогрузиться.
Но уже, всё таки, есть успешные регистрации.
 

one

Client
Регистрация
22.09.2015
Сообщения
6 774
Благодарностей
1 262
Баллы
113
Самое простое и в большинстве случаев рабочее решение это поиск элемента в цикле на странице. Указываем: искать 100 раз с паузой 1сек кнопку отправить.
 

zhekmans

Client
Регистрация
31.05.2019
Сообщения
211
Благодарностей
30
Баллы
28
Когда в табе инициируется переход по какому-то линку, то кубик понимает, что идет загрузка, показываются ее этапы, все отлично. Когда инициируется действие типа клик на кнопку, зено не всегда понимает (если вообще понимает), что после клика следует загрузка, которую тоже следует дождаться. Есть ли способ намекнуть ей об этом? Не хочется пихать множество кубиков с паузами, продлевая при этом время выполнения каждого инстанса. На форуме уже было предложено решение с помощью с#, но оно не срабатывает. Спасибо заранее!
я просто ставлю фокус на нужном элементе стандартным кубиком и на вкладке 'дополнительно' ставлю сколько нужно ждать элемент
 
  • Спасибо
Реакции: lautol

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