понедельник, 31 октября 2011 г.

UserScript - ленивая автоматизация


Всем привет! Продолжаем бороться с рутиной на нашей работе (как мы начинали, можно почитать туттут и тут

Как часто нам тестерам приходится вводить логин и пароль в тестируемое приложение? И сколько времени уходит на все это? Сегодня я хочу поделиться еще одним секретом, как можно побороть это скучное занятие - заполнять поля одним и тем же.


Есть такая полезная штука как userscript ( они же userJS, юзерскрипты, пользовательские срипты). Кратко говоря, юзерскрипт это кусок javascript кода, который хранится на компьютере пользователя. Этот скрипт сидит себе тихо, до тех пор пока пользователь не зайдет на страницу, которая указаны в самом скрипте. Как только появится нужная страница, юзерскрипт выполняется и делает всякие полезные вещи на которые только способен javascript.

Более подробно можно посмотреть на известном портале тут. (кстати, после этой статьи я и начал изучать userscript, так что, mrMig он же Алексей, спасибо ;) ).

Написать юзерскрипт может каждый кто хоть немного умеет программировать и знаком в javascript (я его изучаю по мере необходимости).
А что же можно автоматизировать с помощью такого скрипта? Ну, например
- Заполнение полей формы на странице
- И, вытекающее из первого, заполнение логина и пароля при авторизации в приложении
- Еще много чего на что только способен яваскрипт (можно самим придумать и написать в комментах).

Мы же рассмотрим только самый простой случай, заполнения логина и пароля.

С userscript проще всего работать при помощи дополнения для Fx под названием GreaseMonkey.

Итак, код скрипта для заполнения полей логина и пароля на сайте будет выглядеть так: 

// ==UserScript==
// @name           LoginVkontakte
// @namespace      userScripts
// @include        http://vkontakte.ru/login*
//Маска url на которых будет выполнятся скрипт
// ==/UserScript==

document.getElementById('email').value = 'email@mail.ru';
document.getElementById('pass').value = 'pass';


При переходе на страницу, адрес который соответствует выражению  "http://vkontakte.ru/login*". Выполнится скрипт, и автоматически заполнятся поля логин и пароль. Все, вам останется нажать только кнопку логин.

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

P.S. жду комментариев про то что еще можно автоматизировать на userscript.

10 комментариев:

  1. Лёш, а юзерскрипт имеет те же ограничения, что и JS, то есть с файлами он не работает? Результаты никуда не записать?

    ОтветитьУдалить
  2. Наташа, привет!
    Да, скрипты имеют ограничения не меньше чем JS. Это по сути тот же самый JS, который хранится у пользователя на ПК.

    ОтветитьУдалить
  3. А я специально не пользуюсь такими вещами, память тренирую так.
    А вот "- Заполнение полей формы на странице" это может быть интересно. только надо расписать все подробно с примерами, картинками.

    ОтветитьУдалить
  4. Я когда-то использовал такие скрипты, когда требовалось заполнять журнал работ в жире с использованием определённого шаблона (эти данные автоматически собираются в виде отчёта для бухгалтерии)

    ОтветитьУдалить
  5. Главное чтобы ваш скрипт не увидел злоумышленник, тогда все ваши пароли-явки в очень удобном и автоматизированном виде улетят :)

    ОтветитьУдалить
  6. Алексей, поправь код скрипта, а то час искал проблему почему не работает :)

    document.getElementById('quick_email').value = 'email@mail.ru';
    document.getElementById('quick_pass').value = 'pass';

    ОтветитьУдалить
  7. > Все, вам останется нажать только кнопку логин.

    это тоже можно автоматизировать (как нажатие на чекбокс, выбор из списка)

    добавить строчку:
    document.getElementById('quick_login_button').click();

    ОтветитьУдалить
  8. Макс, привет!
    Ты просто с другой формы логинился, а там Id другие, а я написал вот про эту форму http://vkontakte.ru/login.php

    На счет нажатия > у тебя так работает?

    ОтветитьУдалить
  9. Этот комментарий был удален автором.

    ОтветитьУдалить
  10. привет, Алексей!

    да, ты прав, на урл не обратил внимание

    для http://vkontakte.ru/ клик работает, попробуй сам
    document.getElementById('quick_email').value = '***@mail.ru';
    document.getElementById('quick_pass').value = '123';
    document.getElementById('quick_login_button').click();

    ps http://vkontakte.ru/login.php "вход" делается через js "href="javascript: quick_login()">Вход" как сделать автоклик пока не знаю

    ОтветитьУдалить