Ожидание загрузки страницы в Mozilla/Chrome

Rus74

Client
Регистрация
09.01.2019
Сообщения
109
Благодарностей
42
Баллы
28
Здравствуйте!

Заметил, что при эмуляции браузера Mozilla в Zennoposter прежде, чем произойдёт переход к следующему экшену, шаблон подождет, пока страница загрузится полностью (статус "Готово").

При эмуляции браузера Google Chrome шаблон может не ждать полной загрузки страницы и пойти дальше, из-за чего иногда приходится выставлять паузы между экшенами. Также из-за этого может возникнуть типичная ошибка "HTML элемент не найден по условиям поиска".

Почему такая разница в эмуляции Mozilla/Chrome и нельзя сделать так, чтоб при эмуляции Google Chrome шаблон ждал, пока страница прогрузится полностью перед переходом на следующий экшен, как в Mozilla?
 
  • Спасибо
Реакции: Zoloo

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 689
Баллы
113
Многие наоборот жалуются что происходит вечная загрузка страницы :-)
да там все так же. возможно немного по другому работает прогрузка страницы на хроме, но не кардинально. Вообще это очень плохая идея ориентироваться на этот статус, так как он не может гарантировать факт загрузки страницы полностью. Так как очень многие сайты прогружаются с помощью скриптов или ajax. а некоторая агресивная метрика на сайтах так вообще может превратить загрузку страницы в бесконечное действие.
А вот хорошая идея это как раз ждать появления контрольного элемента на странице. При этом надо всегда поднастраивать этот ожидающий кубик.
Паузу в кубике надо всегда выставлять, достаточную для прогруза страницы. но не фиксированную, а таймаут ожидания элемента. я для плохих проксей выставляю 45 с. таймаут загрузки страницы на 35 с.
ну а что делать при ошибке, HTML элемент не найден по условиям поиска , это сами решайте. я всегда делаю цикл из 3-х попыток перезагрузить страницу. если прокси не совсем дохлый, то помогает.
 
  • Спасибо
Реакции: djaga

todayer

Client
Регистрация
07.08.2013
Сообщения
938
Благодарностей
391
Баллы
63
Не могу найти как запретить ожидание полной загрузки или поставить таймаут на загрузку страницы, подскажите.
 

Roman48

Client
Регистрация
28.02.2016
Сообщения
2 058
Благодарностей
742
Баллы
113
Как вариант сниппет использовать, где-то тут нашел на форуме.
C#:
HtmlElement he = null;
for (int i = 0; i<2; i++) // сколько попыток переходов на урл
{
    var tab = instance.ActiveTab;
    tab.Navigate(project.Variables["url"].Value);
//    System.Threading.Thread.Sleep(4 * 1000);
    if (tab.IsBusy) tab.WaitDownloading();
//    he = tab.FindElementByAttribute("select","name","locationId","text",0);// прописать свои параметры поиска элемента
    he = tab.FindElementByXPath(project.Variables["XPath"].Value, 0);
    
    if (!he.IsNull)
    {
            return "OK";
    }
    Thread.Sleep(7000); // пауза между попытками
}
return null;
 
  • Спасибо
Реакции: Atlas и todayer

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