Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Программный клик на не стандартной кнопке (https://javascript.ru/forum/dom-window/53506-programmnyjj-klik-na-ne-standartnojj-knopke.html)

buthil 06.02.2015 14:45

Программный клик на не стандартной кнопке
 
Здравствуйте, коллеги!
Работаю в больнице. Есть внутренняя программа для записи пациентов на прием (Delphi 7) и база (SQL Server 2008 r2).
Имею задачу наладить онлайн передачу данных на сайт Мин здрава области.
В программе использую вместо IE компонент TChromium.
Для навигации и ввода данных применяю конструкцию:
ExecuteJavaScript(Sq,'about:blank',0), где Sq - текст скрипта.
Таким образом удалось пройти окно авторизации и отобразить окно поиска пациентов.
Здесь имеются визуальные поля для ввода ФИО, а также кнопка Поиск.
ФИО удалось заполнить программно, а вот программно кликнуть на кнопку не удается.
В редакторе браузера Mozilla для этой кнопки я получил такой код:

<td class="lsd-form-grid-cell lsd-forms-field-control ">
<div class="lsd-buttons-panel">
<span id="3793" class="lsd-widgets-action lsd-focusable lsd-widgets-action-operation-full-search lsd-lockable lsd-lockable-submit lsd-input-focused" title="Поиск">
<a class="lsd-widgets-action-link lsd-widgets-action-text" href="javascript:void(0);">
Поиск</a>
<span class="lsd-widgets-action-data" style="display:none;"></span>
</span></div></td>

При этом числовой id изменяется при каждом открытии страницы.
Я пробовал так:
Сначала нашел все node по getElementsByClassName.
Потом по вхождению уникального текста в InnerHTML нашел потребную node и кликнул по ней: node.click();
Но ни чего не произошло. Собственно, здесь и нет обработчика onClick.
Пробовал установить фокус и передаться по ссылке, взятой из href:
node.focus();document.location.href="javascript:vo id(0);";
Тоже ни какого результата.
Может устанавливать фокус и кликать нужно по внутренним элементам этой node?
Прошу пощи!
С уважением, buthil.

ksa 06.02.2015 16:09

buthil, так ты до какого, в итоге, элемента добрался? там ведь ячейка, див, спаны и ссылка...

Цитата:

Сообщение от buthil
Потом по вхождению уникального текста в InnerHTML нашел потребную node и кликнул по ней: node.click();
Но ни чего не произошло. Собственно, здесь и нет обработчика onClick.

Его могут навешивать скриптом после загрузки страницы.
Возможно твой "клик" выполняется раньше чем то навешивание происходит...

freee 06.02.2015 16:16

Попробуй что-нибудь из этого:
<html>
<head>
</head>
<body>



<td class="lsd-form-grid-cell lsd-forms-field-control ">
<div class="lsd-buttons-panel">
<span id="3793" class="lsd-widgets-action lsd-focusable lsd-widgets-action-operation-full-search lsd-lockable lsd-lockable-submit lsd-input-focused" title="Поиск">
<a class="lsd-widgets-action-link lsd-widgets-action-text" href="http://javascript.ru">
Поиск</a>
<span class="lsd-widgets-action-data" style="display:none;"></span>
</span></div></td>


<script>

document.querySelector(".lsd-buttons-panel").click()
document.querySelector(".lsd-widgets-action-link").click()



</script>

</body>
</html>

freee 06.02.2015 16:18

buthil,
//offtop
А, если не секрет, какие именно данные пациентов отправляются в область?

freee 06.02.2015 16:21

Цитата:

Сообщение от buthil
нет обработчика onClick

А причем тут обработчик, если ты пишешь, что тебе надо просто кликнуть? Какое конкретно действие должно происходить по клику?

freee 06.02.2015 16:24

Цитата:

Сообщение от buthil
Пробовал установить фокус и передаться по ссылке, взятой из href:
node.focus();document.location.href="javascript:vo id(0);";
Тоже ни какого результата.

Эта ссылка никуда не ведет, это сброс, фактически. Какого результата ты ждешь?

ksa 06.02.2015 16:30

Цитата:

Сообщение от freee
Попробуй что-нибудь из этого:

Он пишет на
Цитата:

Сообщение от buthil
Delphi 7

А ты ему JS-примеры показываешь...

freee 06.02.2015 16:39

Цитата:

Сообщение от ksa
Delphi 7

Причем тут твои дельфи сраные, если он страницу в браузере открывает. Страница отрисована, значит к ней есть доступ из JS.
Цитата:

Сообщение от ksa
Его могут навешивать скриптом после загрузки страницы.
Возможно твой "клик" выполняется раньше чем то навешивание происходит...

На текстовой ноде невозможно произвести клик.
<html>
<head>
</head>
<body>

<a href="http://ya.ru">txt</a>

<script>

a=document.querySelector("a")
alert(a.childNodes[0])
try{
a.childNodes[0].click()
}catch(e){alert(e)}



</script>

</body>
</html>

ksa 06.02.2015 16:43

Цитата:

Сообщение от freee
Причем тут твои дельфи сраные, если он страницу в браузере открывает.

Ты видать слепой... :D
Цитата:

Сообщение от buthil
Есть внутренняя программа для записи пациентов на прием (Delphi 7) и база (SQL Server 2008 r2).
Имею задачу наладить онлайн передачу данных на сайт Мин здрава области.
В программе использую вместо IE компонент TChromium.
Для навигации и ввода данных применяю конструкцию:
ExecuteJavaScript(Sq,'about:blank',0)
, где Sq - текст скрипта.
Таким образом удалось пройти окно авторизации и отобразить окно поиска пациентов.
Здесь имеются визуальные поля для ввода ФИО, а также кнопка Поиск.
ФИО удалось заполнить программно, а вот программно кликнуть на кнопку не удается.

Я х/з как еще объяснить...

ksa 06.02.2015 16:45

Цитата:

Сообщение от freee
На текстовой ноде невозможно произвести клик.

Почем мне знать на каком элементе он кликает? :D Это я и пытался у него узнать
Цитата:

Сообщение от ksa
так ты до какого, в итоге, элемента добрался? там ведь ячейка, див, спаны и ссылка...

И пока ответа не получил...

freee 06.02.2015 16:45

Цитата:

Сообщение от ksa
Я х/з как еще объяснить...

Объясни, для начала, как люди умудряются на похапэ сайты писать, ведь это жа, внезапно, не жоэс, LOL

ksa 06.02.2015 16:47

Цитата:

Сообщение от freee
твои дельфи сраные

Они не мои и не сраные... :lol:

ksa 06.02.2015 16:51

Цитата:

Сообщение от freee
Объясни, для начала, как люди умудряются на похапэ сайты писать, ведь это жа, внезапно, не жоэс, LOL

Я мало, что из этого понял...
Но у Тса явно проблема в следующем:
- у него есть дельфийская программа с данными
- с области ему дают некий УРЛ, по котором нужно зайти, набрать некие данны, для отправки им на обработку
Поскольку ТС видать не ленивый парень, он на тех же дельфях пытается имитировать ручной ввод регистрации по тому УРЛ и далее хочет так же программо заполнить нужные данные из своей БД.
После чего отправить это все...

freee 06.02.2015 16:54

Цитата:

Сообщение от ksa
пытается имитировать ручной ввод регистрации

Из чего, из дельфей чтоли? Как ты это себе представляешь? У него на выходе страница, дельфями и другими х*ями она генерится, на этом роль х*ув заканчивается.

ksa 06.02.2015 16:57

Цитата:

Сообщение от freee
Из чего, из дельфей чтоли?

Да. :yes:
Цитата:

Сообщение от freee
Как ты это себе представляешь?

Есть некий компонент, который по УРЛ может принять некий хтмл, а потом даже с ним работать.
Может для тебя это новость но браузеры работают по такому же принципу... :D
Цитата:

Сообщение от freee
У него на выходе страница, дельфями и другими х*ями она генерится, на этом роль х*ув заканчивается.

Тут я так же не понял ни слова... :no:

freee 06.02.2015 17:00

Цитата:

Сообщение от ksa
Есть некий компонент, который по УРЛ может принять некий хтмл, а потом даже с ним работать.
Может для тебя это новость но браузеры работают по такому же принципу...

Тогда зачем он использует браузер?

freee 06.02.2015 17:02

Цитата:

Сообщение от ksa
Есть некий компонент, который по УРЛ может принять некий хтмл, а потом даже с ним работать.

В этом компоненте свой собственный JS-движок?

freee 06.02.2015 17:08

Цитата:

Сообщение от ksa
пытается имитировать ручной ввод регистрации по тому УРЛ и далее хочет так же программо заполнить нужные данные из своей БД.

И нахрен в таком случае что-то там имитировать, если можно просто отправить данные на сервер, безо всякого ввода данных, по HTTP?

buthil 07.02.2015 10:29

Какого числа, во сколько и к какому врачу записался.

buthil 07.02.2015 13:49

Всем участникам большое спасибо!
Нужно было кликнуть по элементу:
<a class="lsd-widgets-action-link lsd-widgets-action-text" href="javascript:void(0);">
Поиск</a>
Тема закрыта.


Часовой пояс GMT +3, время: 06:28.