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
так ты до какого, в итоге, элемента добрался? там ведь ячейка, див, спаны и ссылка...

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


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