Результат поиска
скачать демо версию

Загрузка страниц с помощью браузера Chrome

Плагин D5Plugin_Chrome позволяет загружать вебстраницы через браузер Chrome с обработкой Javascript. Таким образом становится возможной работа парсера Вконтакте, Facebook, Google Adwords и т.д.

кликните на изображении для увеличения

Требования к программному обеспечению »

Важно! Плагин работает только с установленной последней версией Google Chrome.

Использование браузера »

Для реализации своих функций плагин задействует браузер Chrome. При запуске кампании Datacol откроет один или более экземпляров браузера Chrome. Количество работающих экземпляров Chrome равно количеству потоков кампании. Обратите внимание, что инициализация экземпляров браузеров может занять некоторое время.

Плагин D5Plugin_Chrome является бесплатным. Он уже импортирован в демо версии Datacol (начиная с Datacol 5.50).

Плагин D5Plugin_Chrome подключается в 2-х местах:

1. В качестве плагина загрузки страницы (чтобы грузить вебстраницы, получаемые из очереди, через Google Chrome):

кликните на изображении для увеличения

2. В качестве плагина окончания процесса (чтобы после окончания работы кампании задействованные экземпляры Google Chrome автоматически удалялись):

кликните на изображении для увеличения

Конфигурация плагина D5Plugin_Chrome задается в соответствующей настройке.

кликните на изображении для увеличения

В конфигурации задаются следующие параметры:

  • disable_images — Флаг, для включения и отключения загрузки изображений в браузере, который используется для загрузки страниц. Флаг может принимать значение 1 или 0 соответственно. Если флаг равен 1, то загрузка изображений будет отключена и загрузка будет производиться быстрее. Флаг лучше отключать (приравнивать к 0), если используются пользовательские сценарии.
  • invalid_load_strings — Список строк, при нахождении которых в исходном коде загруженной страницы — она считается загруженной с ошибкой. Если данная настройка остается пустой, то по умолчанию список выглядит следующим образом:
    Access to requested resource disallowed by administrator
    <title>407 Proxy Authentication Required</title>
    Не удается подключиться к прокси-серверу
  • non_browser_load_regex — регулярное выражение, используемое для определения метода загрузки текущей страницы. Если параметр не пустой и URL страницы соответствует данному регулярному выражению, то вместо загрузки через браузер — страница будет загружаться стандартным загрузчиком Datacol. Параметр обычно используется если часть страниц сайта нужно грузить браузером, а другие можно загружать стандартным загрузчиком Datacol без обработки Javascript.
  • give_control_to_user_xpath — xpath выражение, определяющее элементы вебстраницы, при наличии которых плагин передает контроль пользователю, чтобы тот сделал в браузере те или иные действия (в зависимости от выполняемой задачи, например это может быть ввод капчи), а затем нажал кнопку Продолжить, чтобы вернуть управление плагину.

Пример строки конфигурации:

<dc5par type="string" name="give_control_to_user_xpath"></dc5par>
<dc5par type="int" name="disable_images">0</dc5par>
<dc5par type="list-string" name="invalid_load_strings"></dc5par>
<dc5par type="string" name="non_browser_load_regex"></dc5par>

В конфигурацию можно добавлять так называемые пользовательские сценарии, которые позволят вам задавать команды, эмулирующие действия пользователя после загрузки страницы с помощью браузера. Чаще всего подобные сценарии используются для авторизации на сайте для последующего серфинга от имени залогиненного пользователя. Ниже мы опишем синтаксис подобных сценариев.

Сценарий прописывается в конфигурации плагина загрузки страницы:

кликните на изображении для увеличения

Синтаксис сценариев

Основы синтаксиса сценариев »

Сценарий заключается в теги scenario. Таким образом, конфигурация может выглядеть следующим образом:

<dc5par type="string" name="give_control_to_user_xpath"></dc5par>
<dc5par type="int" name="disable_images">1</dc5par>
<dc5par type="list-string" name="invalid_load_strings"></dc5par>
<dc5par type="string" name="non_browser_load_regex"></dc5par>


<scenario>

ПОЛЬЗОВАТЕЛЬСКИЙ_СЦЕНАРИЙ

</scenario>

Команды заключаются в блоки, которых может быть несколько в рамках сценария. Каждый блок ограничивается тегами cblock.

<scenario>

 <cblock>
     КОМАНДЫ_БЛОКА
 </cblock>

 <cblock>
     КОМАНДЫ_БЛОКА
 </cblock>

 <cblock>
     КОМАНДЫ_БЛОКА
 </cblock>

</scenario>

Команды »

Команда представляет собой отдельное пользовательское действие. Это может быть клик мышкой по кнопке, набор определенного текста в поле ввода, ожидание загрузки определенного вебэлемента и т.п. Каждая команда ограничивается тегами command.

 <cblock>
     <command>
        ОПИСАНИЕ_КОМАНДЫ
     </command>
     
     <command>
        ОПИСАНИЕ_КОМАНДЫ
     </command>
     
     <command>
        ОПИСАНИЕ_КОМАНДЫ
     </command>
 </cblock>

Описание команды состоит из комментария, типа команды и набора параметров.

  <command>
   <comment></comment>
   <type>ТИП_КОМАНДЫ</type>
   <param name='НАЗВАНИЕ_ПАРАМЕТРА'>ЗНАЧЕНИЕ_ПАРАМЕТРА</param>
   <param name='НАЗВАНИЕ_ПАРАМЕТРА'>ЗНАЧЕНИЕ_ПАРАМЕТРА</param>
   <param name='НАЗВАНИЕ_ПАРАМЕТРА'>ЗНАЧЕНИЕ_ПАРАМЕТРА</param>
  </command>

Комментарий — это произвольный текст, описывающий смысл текущей команды для пользователя. Его можно использовать как напоминание для себя же, чтобы в будущем быстро понимать зачем та или иная команда присутствует в сценарии. Комментарий можно не использовать.

Тип команды задается в теге type и указывает собственно вид пользовательского действия. Ниже перечислены возможные значения типа команды:

  • elementClick — клик по элементу, xpath-адрес которого указан в параметре xpath команды;
  • elemNeededClick — клик по элементу, xpath-адрес которого указан в параметре xpath команды, а исходный код элемента соответствует регулярному выражению, указанному в параметре regex команды;
  • elementTypeText — набор текста в элементе, xpath-адрес которого указан в параметре xpath команды. Текст указывается в параметре text команды;
  • elementTypeTextAlt — набор текста в элементе, xpath-адрес которого указан в параметре xpath команды. Текст указывается в параметре text команды. При этом используется альтернативная технология набора текста. В ряде случаев работает команда elementTypeText, в других — elementTypeTextAlt. Таким образом, если не работает первая — пробуем использовать вторую;
  • executeJS — выполнение яваскрипта, указанного в параметре script команды;
  • waitElementLoaded — ожидание загрузки вебэлемента страницы, xpath-адрес которого указан в параметре xpath команды. Максимальное время ожидания загрузки вебэлемента (в секундах) указывается в параметре seconds команды;
  • waitNElementsLoaded — ожидание загрузки определенного количества вебэлементов страницы, xpath-адрес которых указан в параметре xpath команды. Количество задается в параметре n команды. Максимальное время ожидания загрузки вебэлемента (в секундах) указано в параметре seconds команды;
  • navigate — загрузка вебстраницы, адрес которой указан в параметре url команды. Если в виде значения параметра url указана метастрока %URL%, то происходит загрузка текущей вебстраницы, для которой работает плагин. Это зачастую используется в случаях, когда после авторизации сайт осуществляет редирект и нам необходимо повторно (уже от имени авторизованного пользователя) загрузить вебстраницу.

Каждый параметр команды задается в нижеприведенной конструкции:

<param name='НАЗВАНИЕ_ПАРАМЕТРА'>ЗНАЧЕНИЕ_ПАРАМЕТРА</param>

Ниже перечислены допустимые значения названия параметра (аттрибута name):

  • xpath
  • regex
  • id
  • text
  • script
  • url
  • seconds
  • n

Значения параметров зависят от конкретных команд, в которых они используются (описаны выше).

Условия »

Обычно блок сценария выполняется только при определенных условиях. Например, когда пользователь еще не авторизован на сайте в данном конкретном экземпляре браузера (чтобы браузер не пытался авторизоваться при загрузке каждой страницы, в частности — когда авторизация уже осуществлена ранее). В таком случае нам нужно иметь возможность задать условие при выполнении которого блок будет выполнен. Это делается с помощью конструкции condition. Конструкция condition (если она присутствует) задается в начале блока. Каждый блок может иметь свою condition, но в одном блоке должна присутствовать только одна инструкция condition.

 <cblock>
     <condition>
         ОПИСАНИЕ_УСЛОВИЯ
     </condition>

     <command>
        ОПИСАНИЕ_КОМАНДЫ
     </command>
     
     <command>
        ОПИСАНИЕ_КОМАНДЫ
     </command>
     
     <command>
        ОПИСАНИЕ_КОМАНДЫ
     </command>
 </cblock>

Описание условия состоит из типа условия и набора параметров.

Тип условия задается в теге ctype и указывает собственно тип условия. Ниже перечислены возможные значения типа условия:

  • elementExists — текущий блок команд будет выполнен если на странице присутствует элемент, xpath-адрес которого указан в параметре xpath условия;
  • regexExists — текущий блок команд будет выполнен если на странице присутствует элемент, исходный код которого соответствует регулярному выражению, указанному в параметре regex условия;
  • elementNotExists — текущий блок команд будет выполнен если на странице отсутствует элемент, xpath-адрес которого указан в параметре xpath условия;
  • regexNotExists — текущий блок команд будет выполнен если на странице отсутствует элемент, исходный код которого соответствует регулярному выражению, указанному в параметре regex условия;

Каждый параметр условия задается в нижеприведенной конструкции:

<cparam name='НАЗВАНИЕ_ПАРАМЕТРА'>ЗНАЧЕНИЕ_ПАРАМЕТРА</cparam>

Ниже перечислены допустимые значения названия параметра (аттрибута name):

  • xpath
  • regex

Значения параметров зависят от конкретных условий, в которых они используются (описаны выше).

Обработка ошибок »

Рассмотрим простой сценарий:

<scenario>
 <cblock>
  <command>
   <comment></comment>
   <type>elementTypeText</type>
   <param name='xpath'>//input[@name="target"]</param>
   <param name='text'>текст для ввода</param>
  </command>
  <command>
   СЛЕДУЮЩАЯ _КОМАНДА
  </command>
  <command>
   СЛЕДУЮЩАЯ _КОМАНДА
  </command>
 </cblock>
</scenario>

В данном случае после загрузки страницы браузер попытается автоматически найти элемент с xpath-адресом //input[@name=»target»] . При данном написании сценария, даже если такой элемент не был найден, сценарий все равно продолжит выполняться. Однако чаще всего, если элемент (который используется командой) не находится, сценарий априори не может быть выполнен корректно. Например, если нам нужно авторизоваться, а форма авторизации отсутствует (или пользователь просто-напросто неверно задал xpath-адрес ее элемента в сценарии).

Чтобы команда в случае отсутствия нужного элемента (либо вообще в случае какой либо ошибки) сразу прерывала выполнение сценария, используйте в команде флаг detectErrors. Он указывается в каждой команде, которая должна прерывать сценарий в случае неуспешного выполнения. Вышеприведенный сценарий с detectErrors будет выглядеть следующим образом:

<scenario>
 <cblock>
  <command>
   <detectErrors>
   <comment></comment>
   <type>elementTypeText</type>
   <param name='xpath'>//input[@name="target"]</param>
   <param name='text'>текст для ввода</param>
  </command>
  <command>
   СЛЕДУЮЩАЯ _КОМАНДА
  </command>
  <command>
   СЛЕДУЮЩАЯ _КОМАНДА
  </command>
 </cblock>
</scenario>

Обратите внимание, что при прерывании сценария и сигнализации ошибки, в результате страница в Datacol будет загружена с ошибкой. Ошибку можно будет просмотреть в логах работы кампании (или логе тестирования). Сигнализация об ошибке дает возможность пользователю в будущем подкорректировать сценарий для правильной работы.

кликните на изображении для увеличения

Пример простого сценария — авторизация ВКонтакте »

Рассмотрим использование сценариев на примере простого сценария для авторизации ВКонтакте.

<scenario>
 <cblock>

  <condition>
   <ctype>elementExists</ctype>
   <cparam name='xpath'>//input[@name="email"]</cparam>
  </condition>

  <command>
   <comment></comment>
   <type>elementTypeText</type>
   <param name='xpath'>//input[@name="email"]</param>
   <param name='text'>ВАШ_РЕГИСТРАЦИОННЫЙ_EMAIL</param>
  </command>

  <command>
   <comment></comment>
   <type>elementTypeText</type>
   <param name='xpath'>//input[@name="pass"]</param>
   <param name='text'>ВАШ_ПАРОЛЬ</param>
  </command>

  <command>
   <type>elementClick</type>
   <param name='xpath'>//button[@id="quick_login_button"]</param>
  </command>

  <command>
   <type>waitElementLoaded</type>
   <param name='xpath'>//a[@id="logout_link"]</param>
   <param name='seconds'>5</param>
  </command>

 </cblock>
</scenario>

ООО "Интернет-Автоматизация"

71700, Украина, Запорожская область,
г.Токмак, ул.Гоголя, 103/2

Datacol VKontakte Datacol Twitter Datacol Google Plus Datacol Facebook Datacol Telegram
карта сайта
X
У вас есть вопрос?
Менеджер проектов свяжется с вами в течении 1 рабочего дня.