Чем автоматизировать заполнение форм в браузере (создание ботов)

Автор: Igor Kirsanov

Для автоматизированного тестирования, как и для написания ботов кликающих по ссылкам, заполняющих формы и имитирующих действия пользователя используются одни и теже программы. Программистам готовые решения не будут интересны, а вот компоненты позволяющие сделать подобное скорее всего заинтересуют. Рассмотрим бесплатные решения.

1) Селениум
Selenium, это не химический элемент селен, это инструмент для тестирования сайтов. Предназначен он в первую очередь для тестирования, т.е. можно сделать программу и смотреть как запускаются браузер, в нем робот ходит по страничкам, кликает по ссылкам, загружает файлы и т.п.

Лично мне нравится модуль под язык программирования питон, хотя доступно и для других языков, а также автономная IDE для браузера firefox.
Установка для питона достаточно простая
С сайта seleniumhq.org загружаем Selenium Client Drivers для python, распаковываем и устанавливаем как обычно, для виндовс через файл setup.py -install
Пример программы на python


#!/usr/bin/env python 
# -*- coding: utf-8 -*-
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
import time
 
browser = webdriver.Firefox() # Get local session of firefox
browser.get("http://www.yandex.ru") # Load page
assert "Яндекс".decode("utf-8") in browser.title
elem = browser.find_element_by_name("text") # Find the query box
elem.send_keys("http://программисту.рф/".decode("utf-8") + Keys.RETURN)
time.sleep(0.2) # Let the page load, will be added to the API

В данном примере запускается браузер Mozilla Firefox, скрипт переходит на страницу поиска яндекса. В строке поиска набирает название этого сайта программисту.рф и нажимает кнопку поиска.

Для тех кому нужна простая автоматизация, например просто выполнение типовых действий, лучше использовать дополение к браузеру firefox под названием Selenium IDE
2)Watin
Watin - это тоже не утеплитель, а инструмент тестирования. Фактически это портированная под .NET библиотека Watir для Ruby
Возможностей чуть меньше, как и количество поддерживаемых браузеров. Рабочим и протестированным является только "ослик" (internet iexplorer). Библиотеку Watin можно скачать с сайта watin.sourceforge.net
Из плюсов компонента достаточно точная имитация действия пользователя, например в поле происходит именно набор символов, а не присвоение значения.
Пример программы на C#


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WatiN.Core;
 
namespace ConsoleApplication1
{
    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            // Windows
            WatiN.Core.IE window = new WatiN.Core.IE();
 
            // Frames
 
            // Model
            TextField txt_login = window.TextField(Find.ByName("login"));
            Element __ = window.Element(Find.ByText(""));
            TextField txt_passwd = window.TextField(Find.ByName("passwd"));
 
            // Code
            window.GoTo("http://mail.yandex.ru/");
            txt_login.Click();
            txt_login.TypeText("ваш логин");
            txt_passwd.Click();
            txt_passwd.TypeText("ваш пароль");
 
        }
    }
}

Данная программа открывает браузер Internet Iexplorer, в нем переходит на страницу почты яндекса и в нем вписывает логин и пароль. Вход сделаете сами, там не сложно, можно просто послать браузеру клавишу Enter.

Из особенностей программирования, профиль проекта должен быть обязательно просто Net, а не ClientProfile, иначе будет ошибка. И обязательно преобразование в тип STA, в данной программе сделано строкой [STAThread]