powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / JavaScript Button
19 сообщений из 19, страница 1 из 1
JavaScript Button
    #39531658
Двоичник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, помогите, пожалуйста
Пишу программу, которая будет полуавтоматизированно на сайте нажимать кнопки.
Использую TChromium

Парсинг кода страницы показал фрагмент кода кнопки, которую нужно нажать.

Код: html
1.
2.
3.
                        <button class="c-button c-button--solid c-button--gray" data-action="loginform.show" onclick="yaCounter.reachGoal('login_from_top_by_email'); return true;">Войти</button>
                            <form class="u-inline-form" action="https://www.website.ru/reception/?.AMRU=https:%2F%2Fwww.website.ru%2F" method="post">
                                </button>



Не могу сообразить, как программно нажать кнопку?

Код: pascal
1.
2.
3.
4.
5.
6.
var
JSCode:String;
begin
JSCode := 'yaCounter.reachGoal(''login_from_top_by_email'')' ;
Chromium1.Browser.MainFrame.ExecuteJavaScript(JSCode,'about:blank',0);
end;



Научите, пожалуйста
...
Рейтинг: 0 / 0
JavaScript Button
    #39531684
BlackEric
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Двоичник,

Использовать Селениум?
...
Рейтинг: 0 / 0
JavaScript Button
    #39531689
Двоичник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackEricДвоичник,

Использовать Селениум?

Чего использовать?
...
Рейтинг: 0 / 0
JavaScript Button
    #39531702
BlackEric
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
JavaScript Button
    #39531707
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для всяких фреймворков, может и в голом браузере заработает:
Код: javascript
1.
element.triggerHandler('click');



Для jquery:
Код: javascript
1.
$("id_element").click();



Для голого браузера:
Код: javascript
1.
document.getElementById("id_element").click();



Пример:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
var cards = document.getElementsByTagName('article');
for (var i = 0; i < cards.length; i++) {
  var card = cards[i];
  var d = card.getElementsByTagName('div');  
  if(d.length > 0){  
    obj = d[0];
	angular.element(obj).triggerHandler('click');
  }  
}
...
Рейтинг: 0 / 0
JavaScript Button
    #39531709
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для проверки можно открыть страницу в браузере (по крайней мере в фаерфоксе), открытьмониторинг http-запросов и в строке адреса вписывать туда свой код вида: javascript: xxx

Если всё ок после нажатия enter, то должен будет отправиться запрос. Только после этого надо выполнять точно такой же код через делфи.
...
Рейтинг: 0 / 0
JavaScript Button
    #39531761
Двоичник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDiДля проверки можно открыть страницу в браузере (по крайней мере в фаерфоксе), открыть мониторинг http-запросов и в строке адреса вписывать туда свой код вида: javascript: xxx

Если всё ок после нажатия enter, то должен будет отправиться запрос. Только после этого надо выполнять точно такой же код через делфи.

Это конечно заняло какое-то время на исследования. Но я ничего не понял.
А так же скачал мониторинг HTTP запросов - и тоже не осилил....

Други, покажите, пожалуйста, фрагмент кода как это сделать на дельфи, да я пойду...
...
Рейтинг: 0 / 0
JavaScript Button
    #39531766
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сначала пишем код для браузера (как запускать и смотреть есть выше -- строка адреса в браузере и вкладка http-запросов на F12).

Сам код можно изучить вот тут: http://xahlee.info/js/js_get_elements.html и тут http://xahlee.info/js/css_selector_syntax.html

Код: javascript
1.
document.querySelectorAll("button[data-action*="loginform.show"]")[0].click();
...
Рейтинг: 0 / 0
JavaScript Button
    #39531769
Двоичник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
5.
6.
7.
procedure TmainForm.Button1Click(Sender: TObject);
var
JSCode:String;
begin
JSCode := 'document.querySelectorAll("button[data-action*="loginform.show"]")[0].click()' ;
Chromium1.Browser.MainFrame.ExecuteJavaScript(JSCode,'about:blank',0);
end;



не работает
...
Рейтинг: 0 / 0
JavaScript Button
    #39531791
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Двоичник,

Если не работает -- пиши, в каком месте не работает и какая ошибка вылазит.
...
Рейтинг: 0 / 0
JavaScript Button
    #39532048
Двоичник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDiДвоичник,

Если не работает -- пиши, в каком месте не работает и какая ошибка вылазит.

Ошибки то нет. Просто при нажатии кнопку, должна появляться форма, с полями ввода. А она не появляется
Если просто мышкой кликаю в браузере, то норм. А если программно исполнить скрипт, то нет. В этом то и вопрос: Как исполнить джава скрипт, чтобы окно вызвалось
...
Рейтинг: 0 / 0
JavaScript Button
    #39532057
под ван
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Двоичник — от слова "двоичный" (код)?
...
Рейтинг: 0 / 0
JavaScript Button
    #39532064
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДвоичникЕсли просто мышкой кликаю в браузере, то норм. А если программно исполнить скрипт, то нет. В этом то и вопрос: Как исполнить джава скрипт, чтобы окно вызвалось
Забудь про делфи. В первую очередь надо написать готовый скрипт для браузера, чтобы при вводе в строке поиска этот код выполнялся и происходил клик по кнопке.

Т.е. надо вот эту строчку модифицировать (как выбирать элементы на странице -- ссылки давал выше). Вот вариант, если на странице нужная кнопка идет самой первой:
Код: javascript
1.
document.getElementsByTagName("button")[0].click();
...
Рейтинг: 0 / 0
JavaScript Button
    #39533252
stanilar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему всем так нравится TChromium? Ведь TWebBrowser - это обертка над IE Еmbeded, а ембед документирован гораздо лучше чем исходники Хромиума. Да и предназначен именно для встраивания в программы, со всеми вытекающими, в отличии от.

ДвоичникКак исполнить джава скрипт, чтобы окно вызвалось
А ты уверен, что интегрировал свой скрипт именно туда куда надо? А то слово MainFrame меня наводит на сомнения, ведь в веб страницах один фрейм можно вставить в другой...


P.S. Ну GreaseMonkey же!
...
Рейтинг: 0 / 0
JavaScript Button
    #39533353
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С IE нет никакой гарантии, что у пользователя всё будет работать так же, как у тебя. С Хромиумом надёжнее.
...
Рейтинг: 0 / 0
JavaScript Button
    #39533384
stanilar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaonС Хромиумом надёжнее

Не больше, чем с embeded. Хром и хромиум - разные проекты.
...
Рейтинг: 0 / 0
JavaScript Button
    #39533623
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stanilar,

Намного больше. Так как хромиум ты таскаешь с собой, а IE - встроенный. Как повезет. То настроят так, что половина фич отсохнет, то версия/dllка не та, то звери побегали или висят.

авторХром и хромиум - разные проекты.

Я в курсе.
...
Рейтинг: 0 / 0
JavaScript Button
    #39533649
stanilar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
machaon

Ну у Хромиума тоже свои приколы. Насколько мне помнится, TChomium из коробки вроде как 2-3 летней давности? Вероятность отсохнуть должна быть больше, чем у TWebBrowser. Да и проблема правильных версий длл-ок это не проблема ембедед, как раз наоборот.

У ембедед есть разумное апи + документация. А ведь это и есть почти прямая гарантия возможности решить проблему. У того, что ТС таскает с проектом в размере сотни мегабайт, есть исходники и форум, а от апи только краткое описание. Вот замени ТС хромиум на ембедед - вопрос бы уже решился через через стак-оверфло.
...
Рейтинг: 0 / 0
JavaScript Button
    #39533725
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stanilar,

авторНу у Хромиума тоже свои приколы

Приколы можно контролировать и купировать. В отличие от неуправляемого внешнего окружения в виде IE.

Дело хозяйское, в общем :) Каждый должен по своим граблям пройти сам.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / JavaScript Button
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]