Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 WebDriver для TWebBrowser  [new]
TREY
Member

Откуда: с интернета
Сообщений: 1650
столкнулся что на сайте хитрый обработчик .
Если вручную набрать текст в textarea innet text изменяется
Если его через innerHTML менять через dom / js он не срабатует .
В консоли отладчика оно меняет , а на форме нет . Хз как так .
Так же сайт перехватывает focus click enter .. Хитро короче ..

Как прикрутьти вебрайвер на twebbrowser ? Такое вообще возможно ?
29 ноя 18, 18:15    [21748965]     Ответить | Цитировать Сообщить модератору
 Re: WebDriver для TWebBrowser  [new]
Василий 2
Member

Откуда:
Сообщений: 303
Имитируй юзера Winapi функциями, уж это сайт никак не различит (SetFocus, SendInput/Message)
29 ноя 18, 19:38    [21749048]     Ответить | Цитировать Сообщить модератору
 Re: WebDriver для TWebBrowser  [new]
Василий 2
Member

Откуда:
Сообщений: 303
Ну и насчет innerHTML ты ошибаешься, у textarea нет никакого HTML внутри
29 ноя 18, 19:40    [21749050]     Ответить | Цитировать Сообщить модератору
 Re: WebDriver для TWebBrowser  [new]
TREY
Member

Откуда: с интернета
Сообщений: 1650
Василий 2,

перехват курсора напрягает очень , программа работает в фоне
по поводу второго замечания , там немного не так , да , там когда делаешь живой клик , добавляется два инпута и див, и при наборе а текстареа значение изменяется в 3х элементах .. но если их заполнять из js это не влияет на форму , или данные при передаче будут утерянные .. при клике какие то токены генерируются , и тд,. без литры не разобраться
3 дек 18, 15:24    [21752161]     Ответить | Цитировать Сообщить модератору
 Re: WebDriver для TWebBrowser  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3934
Какой-нибудь фреймворк используется типа ангуляра. У него данные хранятся в объектах, а потом синхронизиуются. Лучше как советовали раньше -- через эмуляцию пользовательского ввода. Если никак, то можно в дев-режиме любого браузера в коммандной строке поэкспериментировать с джаваскриптом и найти команду, которая добавляет/обновляет данные (предварительно посмотрев документацию на фреймворк, как это делается).
3 дек 18, 15:34    [21752172]     Ответить | Цитировать Сообщить модератору
 Re: WebDriver для TWebBrowser  [new]
TREY
Member

Откуда: с интернета
Сообщений: 1650
JaDi
Какой-нибудь фреймворк используется типа ангуляра. У него данные хранятся в объектах, а потом синхронизиуются. Лучше как советовали раньше -- через эмуляцию пользовательского ввода. Если никак, то можно в дев-режиме любого браузера в коммандной строке поэкспериментировать с джаваскриптом и найти команду, которая добавляет/обновляет данные (предварительно посмотрев документацию на фреймворк, как это делается).
код закрытый , ручной ввод не работает , так как оно умеет отличать живой клик от программного
3 дек 18, 15:57    [21752190]     Ответить | Цитировать Сообщить модератору
 Re: WebDriver для TWebBrowser  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3934
TREY
оно умеет отличать живой клик от программного

Нельзя отличить, т.к. команды winapi что от нас (при фейковом вводе), что от системы (при вводе пользователем) -- одинаковые. Скорее всего вызывается некорректная последовательность, например, сначала надо поменять фокус/кликнуть по полю ввода, а потом уже вводить текст.
3 дек 18, 16:29    [21752214]     Ответить | Цитировать Сообщить модератору
 Re: WebDriver для TWebBrowser  [new]
TREY
Member

Откуда: с интернета
Сообщений: 1650
JaDi
TREY
оно умеет отличать живой клик от программного

Нельзя отличить, т.к. команды winapi что от нас (при фейковом вводе), что от системы (при вводе пользователем) -- одинаковые. Скорее всего вызывается некорректная последовательность, например, сначала надо поменять фокус/кликнуть по полю ввода, а потом уже вводить текст.

имелась в виду инъекция JS . WinAPI не удобно юзать через убегающий фокус или курсор
3 дек 18, 16:34    [21752220]     Ответить | Цитировать Сообщить модератору
 Re: WebDriver для TWebBrowser  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3934
TREY
JaDi
пропущено...

Нельзя отличить, т.к. команды winapi что от нас (при фейковом вводе), что от системы (при вводе пользователем) -- одинаковые. Скорее всего вызывается некорректная последовательность, например, сначала надо поменять фокус/кликнуть по полю ввода, а потом уже вводить текст.

имелась в виду инъекция JS . WinAPI не удобно юзать через убегающий фокус или курсор

Для инъекций можно использовать тот же jquery (наверняка он уже есть на странице -- если нет, то можно подключить в начале). Например, текст можно поменять вот так:
$("#name").val("123")

Где -- ID для input-поля (в данном случае текстовое). Если после этого в других местах значения не поменяются, то можно еще дополнительно вызывать события на изменения (пример для ангуляра):
var input = $('input');
    input.val('xxx');
    input.trigger('input'); // Use for Chrome/Firefox/Edge
    input.trigger('change'); // Use for Chrome/Firefox/Edge + IE11
3 дек 18, 16:48    [21752245]     Ответить | Цитировать Сообщить модератору
 Re: WebDriver для TWebBrowser  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3934
Все это, естественно, сначала тестируется в консоле браузере (нужные команды и их последовательность), а потом уже и в делфи вызываются.
3 дек 18, 16:50    [21752249]     Ответить | Цитировать Сообщить модератору
 Re: WebDriver для TWebBrowser  [new]
TREY
Member

Откуда: с интернета
Сообщений: 1650
JaDi,

еще раз говорю , там хитро сделано . При клике мышкой , генерится инпут и див , и в текстареа появляется новое свойство с ИДом , условно сесии .. И еще на странице появляется несколько JS ов а в них 100500 страниц обфусцированного кода .

При простом клике JS , или смене значения - ничего этого не происходит ;)
3 дек 18, 16:56    [21752258]     Ответить | Цитировать Сообщить модератору
 Re: WebDriver для TWebBrowser  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3934
TREY,

еще раз повторяю -- надо смотреть код на самой странице и экспериментировать. Все решения гуглятся за минуту. Изучать конкретный код, конкретной страницы и конкретного фреймворка. Эмуляция клика (во фреймворках может потребоваться вызывать другие события):
$("#field1").trigger("click");
3 дек 18, 17:14    [21752274]     Ответить | Цитировать Сообщить модератору
 Re: WebDriver для TWebBrowser  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3934
и да, озвучивать надо конкретные задачи и не секретничать... а то может там вообще банальный парсинг требуется сделать на динамической странице, а мы тут пытаемся руки к заднице прикрутить и залезть с черного хода, когда хватило бы пост-запроса с нужными параметрами.
3 дек 18, 17:17    [21752278]     Ответить | Цитировать Сообщить модератору
 Re: WebDriver для TWebBrowser  [new]
TREY
Member

Откуда: с интернета
Сообщений: 1650
JaDi,

еще раз повторюсь , если бы все было так просто , не придумывали бы WebDriver .
3 дек 18, 17:18    [21752280]     Ответить | Цитировать Сообщить модератору
 Re: WebDriver для TWebBrowser  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3934
TREY,

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

Сначала решается задача со страницей и набором требуемых команд для получения нужного результата, а потом уже эти команды реализуются на делфи, вебдрайвере, винапи или утюге. Этого автором сделано не было.
3 дек 18, 17:23    [21752283]     Ответить | Цитировать Сообщить модератору
 Re: WebDriver для TWebBrowser  [new]
TREY
Member

Откуда: с интернета
Сообщений: 1650
JaDi,

мальчик , иди делай уроки
3 дек 18, 17:27    [21752285]     Ответить | Цитировать Сообщить модератору
 Re: WebDriver для TWebBrowser  [new]
JaDi
Member

Откуда: Сызрань, Россия
Сообщений: 3934
TREY,

строго рекомендую изучить принципы работы современных фреймворков, dom и shadow dom, события, binding и инструменты разработчика в браузерах. Сейчас понимания нет, отсюда и попытки сделать "то, не знаю что" и взгляд на всё как на магию.
3 дек 18, 17:46    [21752313]     Ответить | Цитировать Сообщить модератору
 Re: WebDriver для TWebBrowser  [new]
TREY
Member

Откуда: с интернета
Сообщений: 1650
JaDi
TREY,

строго рекомендую изучить принципы работы современных фреймворков, dom и shadow dom, события, binding и инструменты разработчика в браузерах. Сейчас понимания нет, отсюда и попытки сделать "то, не знаю что" и взгляд на всё как на магию.

с этого и начни
3 дек 18, 17:48    [21752315]     Ответить | Цитировать Сообщить модератору
 Re: WebDriver для TWebBrowser  [new]
Василий 2
Member

Откуда:
Сообщений: 303
Самое простое, что можно придумать для фонового выполнения задачи, требующей фокуса, - это виртуалка либо параллельная сессия юзера.
Если не подходит, то у webdriver есть методы click, sendkeys.
4 дек 18, 10:31    [21752660]     Ответить | Цитировать Сообщить модератору
 Re: WebDriver для TWebBrowser  [new]
TREY
Member

Откуда: с интернета
Сообщений: 1650
Василий 2,

капитан очевидность . Тепер вернемся к тебе топика , возможно ли прикрутить веб драйвер к активаикс twebbrowser-а , если да , пару статьей , какой драйвер лучше выбрать ?
4 дек 18, 13:17    [21752836]     Ответить | Цитировать Сообщить модератору
 Re: WebDriver для TWebBrowser  [new]
Василий 2
Member

Откуда:
Сообщений: 303
К twebbrowser едва ли есть, бери драйверы для IE и переделывай под встроенный компонент
4 дек 18, 14:20    [21752933]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить