Нажатие клавиш в браузере

174
18 июля 2019, 19:30

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

Вся проблема в том, что все эти действия проходят в браузере(Google Chrome или др.) Я не знаю как это реализовать, а именно нажатие клавиш не в консоли, может быть нужно создать не консольное приложение?(Любой язык, но я пишу на C++ и C#)

Перекопал кучу интернета...

Answer 1

Создаешь Cef инстанс и делаешь все что тебе нужно. Можно создать сразу CEF без показывания на экран, кстате.

Код на c#, но, думаю, ты сможешь без проблем его подстроить на плюсы, если с ними тебе удобнее:

  1. сначала берешь координаты кнопки куда нужно кликнуть при помощи JS
  2. Симулируешь клик при помощи CEF:

    public void MouseClick(int x, int y)
    {
        Browser.GetBrowser().GetHost().SendMouseClickEvent(x, y, MouseButtonType.Left, false, 1, CefEventFlags.None);
        Thread.Sleep(15);
        Browser.GetBrowser().GetHost().SendMouseClickEvent(x, y, MouseButtonType.Left, true, 1, CefEventFlags.None);
    }
    

Для чего такие сложности спросишь ты? И почему бы не воспользоватся кликом при помощи JS?

Да потому, что в целях защиты от нехороших людей в браузерах целый ряд кликов блокируются. А вот этот клик сработает в любом случае.

Здесь можно найти пример аплоада файла без открытия openfiledialog: https://stackoverflow.com/questions/51690123/cef-upload-file-without-shown-openfiledialog

в общем... думаю ты идею уловил)

Еще есть вариант с Selenium. Но он будет работать медленнее. Зато стоково есть много удобных хреней вроде кучи селекторов/кликов/захвата текста, выбора елемента дропдауна по названию и подобных штук.

Еще может быть полезным почитать мои ответы здесь: Как пропарсить сайт с авторизацией?

была еще какая-то линка где я развернуто описывал самые разные способа для взаимодействия и парсинга сайтов, но мне ее не удалось найти =(((((

READ ALSO
Как сделать ссылку на input?

Как сделать ссылку на input?

Хочу сделать чтобы в зависимости от выбранного input отправлялось на нужный метод, Как можно сделать ссылку на этот инпут?

168
Как добавить расширения в Cefsharp?

Как добавить расширения в Cefsharp?

Пару дней назад в cefsharp добавили поддержку расширенийНикакой документации как добавить расширения я не нашел, хотя в коммитах есть инфа

144
c# и debug режим

c# и debug режим

Можно ли в с# CLR код, запустить в "трассировочном" режиме? Можно ли как-то перехватить вызов Invoke? Как можно написать дебаггер под с# код? Единственное...

124
Проверка правильности Image

Проверка правильности Image

У нас есть Image и TextBlock, через который мы может задавать источник изображения:

188