06.02.2015, 14:45
|
Новичок на форуме
|
|
Регистрация: 06.02.2015
Сообщений: 4
|
|
Программный клик на не стандартной кнопке
Здравствуйте, коллеги!
Работаю в больнице. Есть внутренняя программа для записи пациентов на прием (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.
|
|
06.02.2015, 16:09
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
buthil, так ты до какого, в итоге, элемента добрался? там ведь ячейка, див, спаны и ссылка...
Сообщение от buthil
|
Потом по вхождению уникального текста в InnerHTML нашел потребную node и кликнул по ней: node.click();
Но ни чего не произошло. Собственно, здесь и нет обработчика onClick.
|
Его могут навешивать скриптом после загрузки страницы.
Возможно твой "клик" выполняется раньше чем то навешивание происходит...
|
|
06.02.2015, 16:16
|
Аспирант
|
|
Регистрация: 05.02.2015
Сообщений: 51
|
|
Попробуй что-нибудь из этого:
<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>
|
|
06.02.2015, 16:18
|
Аспирант
|
|
Регистрация: 05.02.2015
Сообщений: 51
|
|
buthil,
//offtop
А, если не секрет, какие именно данные пациентов отправляются в область?
|
|
06.02.2015, 16:21
|
Аспирант
|
|
Регистрация: 05.02.2015
Сообщений: 51
|
|
Сообщение от buthil
|
нет обработчика onClick
|
А причем тут обработчик, если ты пишешь, что тебе надо просто кликнуть? Какое конкретно действие должно происходить по клику?
|
|
06.02.2015, 16:24
|
Аспирант
|
|
Регистрация: 05.02.2015
Сообщений: 51
|
|
Сообщение от buthil
|
Пробовал установить фокус и передаться по ссылке, взятой из href:
node.focus();document.location.href="javascript:vo id(0);";
Тоже ни какого результата.
|
Эта ссылка никуда не ведет, это сброс, фактически. Какого результата ты ждешь?
|
|
06.02.2015, 16:30
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от freee
|
Попробуй что-нибудь из этого:
|
Он пишет на
Сообщение от buthil
|
Delphi 7
|
А ты ему JS-примеры показываешь...
|
|
06.02.2015, 16:39
|
Аспирант
|
|
Регистрация: 05.02.2015
Сообщений: 51
|
|
Сообщение от 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>
|
|
06.02.2015, 16:43
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от freee
|
Причем тут твои дельфи сраные, если он страницу в браузере открывает.
|
Ты видать слепой...
Сообщение от buthil
|
Есть внутренняя программа для записи пациентов на прием (Delphi 7) и база (SQL Server 2008 r2).
Имею задачу наладить онлайн передачу данных на сайт Мин здрава области.
В программе использую вместо IE компонент TChromium.
Для навигации и ввода данных применяю конструкцию:
ExecuteJavaScript(Sq,'about:blank',0), где Sq - текст скрипта.
Таким образом удалось пройти окно авторизации и отобразить окно поиска пациентов.
Здесь имеются визуальные поля для ввода ФИО, а также кнопка Поиск.
ФИО удалось заполнить программно, а вот программно кликнуть на кнопку не удается.
|
Я х/з как еще объяснить...
|
|
06.02.2015, 16:45
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от freee
|
На текстовой ноде невозможно произвести клик.
|
Почем мне знать на каком элементе он кликает? Это я и пытался у него узнать
Сообщение от ksa
|
так ты до какого, в итоге, элемента добрался? там ведь ячейка, див, спаны и ссылка...
|
И пока ответа не получил...
|
|
|
|