Сойдет ли webdriver для парсинга на JAVA и вставки текста в поля или лучше написать расширение для браузера

chromedriver
java
javascript
webdriver
selenium
Теги: #<Tag:0x00007fedc75ef328> #<Tag:0x00007fedc75ef080> #<Tag:0x00007fedc75eee28> #<Tag:0x00007fedc75eebd0> #<Tag:0x00007fedc75ee9a0>

(Tural Badalov) #1

Доброго времени суток! В веб программирование и понимании его технологий я практически ничего не знаю, в основном пишу на java для андроид. Работаю на виндовс.

Это всё сделано:
Задача такая: Одновременно открыто два сайта, на одном я копирую нужный ID в буфер обмена жму горячие клавиши (программа на java слушает глобально клавиатуру, реализовано с помощью библиотеки jnativehook) и jsoup парсит сайт, нужные данные записываю в буфер обмена. Захожу на второй сайт и в поля делаю вставки, алгоритм по очереди помещает в буфера обмена нужный мне текст.

Не сделано:
Автоматизировать вставку на втором сайте.
Так как перед сохранением результата, я его должен проверить, я думал написать UI, где будут все поля сайта, куда сделается сразу вставка и после проверки я сохраню введенное (после сохранения назад пути нет, удалить нельзя), для этого я должен был понять какие запросы выполняет сайт для сохранения введенной информации, но сайт пропитан javascript’ами как я понял. Кстати сайт bpmonline.com (CRM система). И запросы сайта выполнить с помощью jsoup я не могу…
Т.е. второй сайт парсить с помощью jsoup я не могу, а мне нужно с него получить значение одного поля, чтобы добавить его к тексту, который будет вставляться.
И теперь две проблемы, одна как получить с сайта информацию и как сделать вставки.

Мои идеи, попытки,мысли: Поправьте мои предположения.
Сперва о вставках. мне говорили, что можно написать расширение для браузера, которое будет делать вставку, но тут у меня появилось два вопроса: увижу ли я текст, который появился в полях, чтобы его проверить перед сохранением? как передать расширению текст? Посмотрел возможности расширений и понял, что оно может в области окна браузера слушать клавиатуру и может обратиться к буферу обмена. Сможет ли оно сделать вставку текста, так чтобы я увидел это?
Так же мне предложили использовать webdriver. Как я думаю он сможет распарсить второй сайт и сможет произвести вставку в поля, но я не понимаю как правильно построить архитектуру приложения, чтобы webdraiver был активен всё время(он используется для тестов и завершает работу по окончанию) , чтобы в одном приложении слушать клавиатуру и по нажатию нужных клавиш webdriver производил вставку. Возможно ли заставить его ожидать нажатия, чтобы каждый раз не перезапускать драйвер?
И всё же мне кажется использование selenium webdriver громоздким решением. Проще наверно второй сайт парсить с помощью расширения для браузера и с помощью него же и производить вставку.

Подскажите как и с помощью чего решать данную задачу.


(Tural Badalov) #2

Смотрю что jsoup может парсить и код, где есть javascript , но как? В ответах на запросы сайт возвращает информацию полей не как текст, а как определенные значения и эти значения как я понимаю, javascript преобразует в нужный текст и вставляет в html. Как мне с помощью jsoup получить html, который сайт не выдает в ответе на запрос…


(Дмитрий Мирошник) #3

Я бы смотрел в сторону тестирования REST / SOAP методов, которые лежат под данными страницами. Если задача - взять id с 1-й странички и вставить его во 2-ю - то по крайней мере для 1-й задачи нет надобности открывать страничку, достаточно вытянуть id из соответствующего метода. Насчёт 2-й части - тут надо смотреть, что именно необходимо проверить. В случае проверки результата - достаточно также использовать REST / SOAP запрос. В случае необходимости проверить корректность отображения странички - придётся её загрузить.


(Tural Badalov) #4

Я уже в общем этот вопрос понял. Первая часть задачи выглядит не совсем так, как вы поняли, но с ней проблем нет. Со второй частью начал разбираться. Использую пока webdriver хрома. Перехожу по страничкам и вставляю текст. Минус в том, что долго это, ровно столько же времени если бы я сам кликал. Захотелось теперь чтобы всё было без GUI, но в последний момент он появлялся, чтобы я мог проверить и внести правки (поэтому скрины для проверки не подходят, так как довольно часто над делать правки) . На стаковерфлоу подсказали, что теперь хром может без GUI работать и если повезет и скрипты не сильно связаны друг с другом, то можно будет это реализовать.