@Vadizi

Каким образом можно экспортировать текст в поле ввода на странице Google Chrome через расширение?

Добрый день!
Столкнулся с такой проблемой, на странице нужно вписывать определенные фразы в разные поля на странице, но полей много и это занимает время, думаю над тем, чтобы делать это через расширение, подскажите, возможно ли это и если возможно, то каким образом?
  • Вопрос задан
  • 132 просмотра
Решения вопроса 2
vovka3003
@vovka3003
Фрилансер. Инженер систем безопасности.
Это можно сделать с помощью Selenium или через ChromeDriver.
Если расширением, приходит на ум вариант:
указать в расширении нужный хост, запускать Chrome с url вида "адрес?имя_поля=значение&..., в "run_at": "document_idle" парсить url, искать элементы на странице, заполнять...
Правда не проверял насколько "резиновым" получится входной путь (у винды свои ограничения)

upd: Добрался до компа, набросал:

manifest.json
{
  "manifest_version": 3,
  "name": "Тест",
  "description": "Тест заполнение поля",
  "version": "1.0.0",
   "content_scripts": [
       {
           "matches": [ "https://*.google.ru/webhp?*" ],
           "js": [ "app.js" ],
		   "run_at": "document_idle"
       }
 ]
}


app.js
var sp = new URLSearchParams(location.search);
document.getElementsByName('q')[0].value = sp.get('poisk');


Запуск chrome:
chrome.exe "https://www.google.ru/webhp?poisk=Котики ржака"


Результат:
sEw1Y4W.png
Ответ написан
Dr_Elvis
@Dr_Elvis
В гугле забанен
Ух! Это было одно из первых моих расширений. Нужно было по работе тестировать формы и каждый раз вводить одно и тоже было не вариант. У меня без расширения уходило пару часов чтобы протестировать 18 форм. С расширением я это делал за 8 минут.
Что тебе нужно:
1) создать manifest.json, в котором указать достаточно стандартный набор данных. Не забудь сделать ограничение в content_scripts matches на домен, по типу такого *://example.com/* чтобы твое расширение не срабатывала на всех сайтах подряд.
2) файл скрипта на js. Его ты подключаешь в манифесте выше. В самом скрипте прописываешь вставку данных после загрузки страницы. Например:
function insertit(){
    document.getElementById('idinput').value = 'Hello World!';
}
document.addEventListener('DOMContentLoaded', insertit);

3) Нужны иконки твоего расширения, но тут думаю разберешься.
Всё, это минимум который необходим. При полной загрузке страницы будет запущен скрипт который найдет текстовое поле с ID idinput и вставит туда Hello World!.
Если у тебя несколько разных форм на разных страницах и нужно вставлять в каждую свои данные, то можно добавить условие на window.location.pathname, например так:
function insertit(){
    if(window.location.pathname == '/page1'){
        document.getElementById('idinput').value = 'Hello';
    }
    if(window.location.pathname == '/shop.php'){
        document.getElementById('idinput').value = 'World!';
    }
}
document.addEventListener('DOMContentLoaded', insertit);

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

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

Похожие вопросы