Как написать программу которая будет выполнять действия на сайте
Перейти к содержимому

Как написать программу которая будет выполнять действия на сайте

  • автор:

Как и на каком языке можно написать программу, которая автоматизирует ручное заполнение информации в окне браузера

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

Из навыков программирования только VBA excel. Хочется также понять, что конкретно и в каких языках программирования стоит изучить, чтобы суметь сделать подобную программу. Предпочтительно на Python. И был бы очень признателен за ответы на то, как решить последовательные кусочки этой довольной большой задачи и где можно прочитать ответы, чтобы эти кусочки работали: как заполнять формы в браузере, используя имя файла «Автор — Книга.doc» над этими формами? Как выбирать логин из списка? и др.

Отслеживать
34.6k 15 15 золотых знаков 66 66 серебряных знаков 95 95 бронзовых знаков
задан 29 апр 2016 в 13:50
Kertanov Viktor Kertanov Viktor
61 4 4 бронзовых знака
UI Automation вполне справится. C#. ru.stackoverflow.com/a/509694/10105
29 апр 2016 в 13:55
похожий вопрос: Interact with other programs using Python
29 апр 2016 в 16:55
Если вам дан исчерпывающий ответ, отметьте его как верный (галка напротив выбранного ответа).
30 апр 2016 в 3:32

Есть множество систем автоматизации тестирования ПО. Они не очень распространены в миру в силу того, что специфичны для профессии QA-engineer, но с такими задачами они справляются на раз. Есть системы которые лучше работают с web, с мобильными, с десктопными. Примеры — Uppium, Selenium

3 фев 2018 в 8:28

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Вместо того, чтобы пытаться повторить действия пользователя с GUI буквально, можно взглянуть на задачу глазами программиста:

  • вместо открытия браузера, заполнения и отправки формы, можно выполнить http POST запрос напрямую ( request.post() )
  • вместо выбора файлов в графическом диалоге, можно использовать API, которое возвращает список файлов по шаблону ( Path().glob(«*.doc») )
  • вместо копирования руками метаданных книги из названия файла Author — Title.doc в элементы формы, выставляются требуемые параметры запроса напрямую (author, title в примере). Сами метаданные из имени файла можно получить, манипулируя строку с именем напрямую: fn.split(‘-‘) или с помощью регулярных выражений: r’^([^-]+?)\s*-\s*(.+)\.doc$’
  • вместо копирования результатов загрузки из окна в Excel, ответ сервера напрямую печатается в csv формате в стандартный вывод ( csv.writer(sys.stdout) ) Что легко в файл скопировать ( | tee -a books.csv )

Конечный скрипт, который загружает файлы с книгами, может выглядеть так:

#!/usr/bin/env python3 '''Upload " - .doc" books from the given directory. Usage: upload-books | tee -a books.csv ''' import csv import re import sys from pathlib import Path import requests # $ pip install requests if len(sys.argv) < 2: sys.exit(__doc__) src_dir = sys.argv[1] with requests.Session() as sess: writer = csv.writer(sys.stdout) for path in Path(src_dir).glob('*.doc'): # for each book metadata = re.findall(r'^([^-]+?)\s*-\s*(.+)\.doc$', path.name) if not metadata: print("warning: can't find author, title in path:", path, file=sys.stderr) continue # don't upload # upload book author, title = metadata[0] book = r = sess.post('https://example.com/api/v1/books', files=book, auth=('user', 'passwd')) if not r.ok: print("warning: can't upload book from path:", path, file=sys.stderr) continue # don't save book info # save uploaded book info data = r.json()['response'] writer.writerow([str(path), author, title, data['url']]) 

Это в хорошем случае, когда у сайта есть явное API или спонтанно сформировавшийся набор http запросов/ответов, не требует выполнения динамического кода в браузере (или когда результаты этого выполнения могут быть легко смоделированы).

В менее удачном случае, когда, например, за загрузку книг ответчает Silverlight control, который использует какой-нибудь свой протокол для общения с сервером, то может быть проще использовать инструменты GUI автоматизации такие как pywinauto, pyautogui или AutoIt (упомянутый в ответе на схожий вопрос на Stack Overflow).

В промежуточном случае, интерфейс реализован в браузере на javascript и работу с ним можно автоматизировать, используя что-нибудь вроде Selenium WebDriver (+ headless chrome).

Как реализовать программу работающая за тебя на сайте?

Постараюсь расписать всё от "А" до "Я" и наконец покончить с этим. Стоит задача сделать программу exe'шник, запускающаяся в окне под windows. От неё требуется, по пунктам:
1. При запуске спросить логин и пароль у пользователя.
fdc7caedbdc94c968f5444b8c4f44cf5.png
2. После нажатия кнопки "ВХОД" авторизоваться на сайте.
3. Перейти в определённый раздел сайта.
4. Произвести проверку определённого места на сайте по сценарию типа (взят за пример) "Если ничего НЕТ, то обновлять до тех пор, пока не ПОЯВИТСЯ и тогда, перейти по ссылке на указанный сайт и выполнить пару нажатий в определённых местах". Сценарий зациклен.
ИМЕЕТСЯ API сайта!
Не маловажные пункты: всё делает "про себя", т.е. всё происходящее на сайте для пользователя не видны, только основное окно с парой-тройкой кнопок; запуск и работа сразу нескольких таких программ. Пример (пусть и не самый удачный): VKmusic (в плане exe'шника, авторизации и работы с сайтом).
b66b545667164ddeb8a0167f84b610e8.jpg
С помощью чего, каких программ, библиотек и языков программирования можно это осуществить? И вообще, можно ли реализовать в Microsoft Visual Studio Proffesional? Уж больно удобная среда для работы и создания качественного интерфейса. Прошу помощи, ребят! Отвечу на любые ваши вопросы. Расписывайте максимально подробно) Прошу вас, помогите пожалуйста)

  • Вопрос задан более трёх лет назад
  • 880 просмотров

Комментировать
Решения вопроса 1

MrNexeon

Если я правильно понял,

Тебе необходимо осуществить отправку запросов на веб-сайт и получение с них какого-либо ответа (имя и фамилию, список друзей, ключ доступа). Это можно реализовать с помощью протокола HTTP.

Используй любую библиотеку, которая работает с протоколом HTTP, например SFML для C++

При этом, веб-сайт (или правильнее сказать - сервер) должен уметь обрабатывать данные запросы и отправлять ответ. (В противном случае нужно использовать библиотеки для парсинга сайтов, например Grab для Python)

VK Music (в твоем примере) использует официальное API сайта Вконтакте для авторизации, получения плейлиста и т.д.

Как написать программу работающую с сайтом?

Здравствуйте! Не могу определиться с чего начать. В общем необходимо написать программу (.exe, прям вот на компьютере что бы!, под windows'ом!) с примитивным интерфейсом (кнопочки, поля для ввода и т.д.) и что бы она могла взаимодействовать с сайтом. К примеру: в программке я ввожу логин и пароль, нажимаю "вход" и она на сайте входит в аккаунт. После от неё требуется, к примеру, если значение на сайте "удалить", то программка автоматически удаляет определённый комментарий. В интернете по этой части ничего найти не смог. Помогите пожалуйста! Что для этого потребуется? Какие языки мне для этого понадобятся?

  • Вопрос задан более трёх лет назад
  • 6106 просмотров

Комментировать
Решения вопроса 1

iiiBird

Пока ты спишь - твой конкурент совершенствуется
зачем целый интерфейс админки переносить в оконное приложение? но если прям уж очень хочется чтобы

.exe, прям вот на компьютере что бы!, под windows'ом!

тогда берешь delphi или VisualStudio игуглишь в сторону интеграции webkit browser. ну и в конечном итоге ты получишь че то типа браузера в оконном приложении, где уже сможешь работать с своим сайтом.

Ответ написан более трёх лет назад
Нравится 4 1 комментарий
xmoonlight @xmoonlight
Delphi 7 - оптимально и быстро.
Ответы на вопрос 4

Любой подходящий язык - хоть Delphi. Но под каждый сайт придётся писать своё и в случае изменений переписывать.

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать

На счет языков. Тут подойдет любой, так как GUI("кнопочки, поля ввода. ") уже даже для PHP есть, хоть это и высшая степень извращениях.
Я бы рассматривал два варианта WPF или Swing/JavaFX. Для первого нужно знать C#, для второго/третьего Java.
Дальше все просто, приложение посылает запрос и распахивает данные по элементам графического интерфейса.
Но судя по вопросу, когда Вы дойдете в обучении до того, что сможете это сделать, поймёте, на сколько задача не правильна и как это все нужно делать.
P.S. Если есть доступ к БД, то лучше работать с БД, а не с сайтом.
P.P.S. Если доступа к БД нету, то такая программа давно есть, называется браузер!

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать

Rou1997

Это либо headless-браузеры (WebBrowser - IE's Trident, WebKit, Phantom.js и т.п.), либо сети (HTTP), подходит любой язык, удобнее всего на C# и Delphi.
Но помимо языка, потребуются навыки реверс-инжиниринга и отладки. По нарастающей:
просмотр кода страницы и текущего кода DOM в браузере;
деобфускация JavaScript;
сниффинг сетевых HTTP-запросов с помощью средств разработчика в браузере и других снифферов, например Fiddler, Wireshark, Charles и т.п. (в основном для сайтов с AJAX, их сейчас все больше);
отладка JavaScript с помощью средств разработчика в браузере.

ИМХО, эта задача довольно простая для программиста, правда требуется аналитическое мышление, но оно должно быть априори, гораздо сложнее строить свою архитектуру, а для изучения достаточно просто не полениться освоить средства отладки и средства для повторения действий - браузеры и HTTP.

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Алексей Алексин @leroyleroy

Я бы в VisualStudio на C# сделал бы приложение. Быстро и просто, плюс для тех у кого проблемы с запросами, там присутствует конструктор запросов и автоматом создаются функции delete/alter.

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

веб-разработка

  • Веб-разработка
  • +1 ещё

Как синхронизировать ТГ-канал и сайт?

  • 1 подписчик
  • 4 часа назад
  • 38 просмотров

5 программ для автоматизации чего угодно на компьютере

Продолжаем рассказывать про автоматизацию рутины на компьютере. Вот что было в предыдущих частях:

  • В некоторых программах есть возможность записать свои действия, чтобы потом повторять их сколько угодно раз. Такие действия называются скриптами и макросами.
  • Это помогает в ежедневных ситуациях: обработать электронную таблицу, отформатировать документы, подготовить файлы и перевести их из одного формата в другой.
  • Скрипты делают двумя способами: пишут команды на встроенном языке или делают всё мышкой и клавиатурой, а компьютер это запоминает.

Бывает так, что рутины много, а нужные программы не поддерживают макросы и у них нет своего языка для скриптов. В этом случае используют программы для автоматизации разных действий на компьютере.

Как это работает

В зависимости от возможностей такие программы делятся на автокликеры, программы поиска изображений и скриптовые автоматизаторы.

Автокликеры подойдут, если для выполнения нужных действий достаточно мышки. Работают так: включаете запись и выполняете мышкой всё, что нужно сделать. Программа запоминает координаты кликов и интервалы между ними, а потом имитирует их, как будто это делаете вы. Это самый простой и надёжный вариант, но у него есть большой минус: если поменяется интерфейс или размер окна, то программа об этом не узнает — она будет кликать по старым координатам и может что-то испортить.

Программы с поиском изображений работают иначе: вы делаете скриншот нужной области, вставляете его в программу и на внутреннем языке объясняете, что с этим делать. Например, можно нажать на найденную картинку (если это иконка сохранения), перетащить её в другое место, ввести туда текст и ещё много разного. Это более универсальное решение, чем автокликеры, но надо немного разбираться в программировании.

Автоматизаторы на скриптах. Это самый замороченный, но самый большой по возможностям способ что-то автоматизировать. Automator из macOS — это именно оно. Можно сделать что угодно в пределах того, что умеют приложения через свои API: как угодно стыковать разные приложения, передавать данные из одного в другое, работать с файловой системой и делать много других вещей. Но придётся прямо писать скрипт.

Action(s)

Платформа: Windows, macOS.

Эту программу сделали 10 лет назад, и для macOS она уже сильно устарела, но в Windows всё отлично работает. Интерфейс создания скриптов может показаться сложным для новичков. Но если вам нужен полный контроль — она поможет.

Если нужна современная версия для macOS, посмотрите на встроенное приложение Automator. Из коробки он умеет не так много, но есть сторонние расширения.

5 программ для автоматизации чего угодно на компьютере

AutoIT

Платформа: Windows.

Если вам понравились возможности предыдущей программы, но вы хотите всё контролировать сами и писать свои скрипты, попробуйте AutoIT. В ней используется свой язык, похожий на Бейсик, но с глубоким погружением в системные команды операционной системы. При желании на ней можно запрограммировать даже имитацию работы за компьютером в течение дня — всё будет выглядеть так, как будто человек сидит перед монитором и что-то делает.

Sikuli

Платформа: любая, где можно запустить виртуальную машину Java.

Эта система понимает скрипты на Python, Ruby и JavaScript и поддерживает все языки программирования, связанные с Java (Jython, JRuby, Scala, Clojure и остальные).

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

Например, её можно научить играть в «Весёлого фермера», чтобы она сама находила на экране морковку, собирала её, отправляла кур спать и поливала грядки.

AutoClickExtreme

Платформа: Windows.

Программа заточена на имитацию нажатий мыши и клавиатуры и делает это максимально точно. QA-инженеры иногда используют её для тестирования интерфейсов, чтобы не нажимать всё вручную.

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

5 программ для автоматизации чего угодно на компьютере

Macro Scheduler

Платформа: Windows.

Самая дорогая программа в подборке, но оно того стоит:

  • запись действий мыши и клавиатуры;
  • прямая работа с базами данных, сетевыми протоколами и парсерами данных;
  • распознавание текста на экране;
  • запись макросов для браузеров;
  • работа с любыми элементами ОС напрямую и через скриншоты;
  • свой скриптовый язык;
  • 300 готовых шаблонов автоматизации.

5 программ для автоматизации чего угодно на компьютере

Получите ИТ-профессию

В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *