Чем автоматизировать заполнение форм в браузере (создание ботов)
Для автоматизированного тестирования, как и для написания ботов кликающих по ссылкам, заполняющих формы и имитирующих действия пользователя используются одни и теже программы. Программистам готовые решения не будут интересны, а вот компоненты позволяющие сделать подобное скорее всего заинтересуют. Рассмотрим бесплатные решения.
Селениум
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
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]