Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Авторизация на сайте [D7, XP]


Кирилов. А.С. ©   (2016-07-10 12:18:00) 

Доброго времени! Нужен совет мастеров. Хочу сделать авторизацию в программе на сайте для чтения информации: https://order.utr.ua/
Работаю с компонентом Chromium в D2010 так:
var
login,pass,CodeStr:String;
begin
login:='mylogin';
pass:='mepass';
CodeStr := 'document.getElementsByName("Login[username]").value="'+login+'";';
Chromium1.Browser.MainFrame.ExecuteJavaScript(CodeStr, 'about:blank', 0);
CodeStr := 'document.getElementsByName("Login[password]").value="'+pass+'";';
Chromium1.Browser.MainFrame.ExecuteJavaScript(CodeStr, 'about:blank', 0);
CodeStr := 'document.getElementsByClassName("big-red-button").click();';
Chromium1.Browser.MainFrame.ExecuteJavaScript(CodeStr, 'about:blank', 0);
end;
Но данные для авторизации в поля не вносятся и отсылка не работает.. (( Что делаю не так?


Кирилов. А.С.   (2016-07-10 15:39:00) [1]

Благодарствую...


ухты   (2016-07-10 15:38:00) [2]

Да полно в сети литературы, уроков и т.п.
http://www.w3schools.com/Js/вот тут для начала неплохо
https://ru.wikipedia.org/wiki/JavaScriptтут вообще много чего


Кирилов. А.С.   (2016-07-10 15:26:00) [3]

Хорошо, спасибо! Что посоветуете почитать для расширения кругозора JavaScript?


ухты   (2016-07-10 15:18:00) [4]

зачем дергать постоянно? можно же просто одним куском выполнить
CodeStr := 'document.getElementsByName("Login[username]")[0].value="'+login+'";';
CodeStr := CodeStr  + 'document.getElementsByName("Login[password]")[0].value="'+pass+'";';
CodeStr := CodeStr  + 'document.getElementsByClassName("big-red-button")[0].click();';
Chromium1.Browser.MainFrame.ExecuteJavaScript(CodeStr, 'about:blank', 0);


Кирилов. А.С.   (2016-07-10 15:12:00) [5]

Подозреваю что в связке с Chromium JavaScript пригодится еще не раз...
Что толкового можно почитать об этом? (сайты, книги, авторы)


Кирилов. А.С.   (2016-07-10 15:10:00) [6]

Исправил, все работает теперь в таком виде:

var
login,pass,CodeStr:String;
begin
login:='mylogin';
pass:='mypass';
CodeStr := 'document.getElementsByName("Login[username]")[0].value="'+login+'";';
Chromium1.Browser.MainFrame.ExecuteJavaScript(CodeStr, 'about:blank', 0);
CodeStr := 'document.getElementsByName("Login[password]")[0].value="'+pass+'";';
Chromium1.Browser.MainFrame.ExecuteJavaScript(CodeStr, 'about:blank', 0);
CodeStr := 'document.getElementsByClassName("big-red-button")[0].click();';
Chromium1.Browser.MainFrame.ExecuteJavaScript(CodeStr, 'about:blank', 0);
end;

Большое спасибо за полезные советы!!!


ухты   (2016-07-10 15:00:00) [7]

да при чем тут это?
getElementByName - не существует
getElementsByName - возвращает массив
т.о. getElementsByName(..)[0].value = ..;

тоже для getElementsByClassName
только убедится надо что в массиве есть то что вам надо
))


Кирилов. А.С.   (2016-07-10 14:55:00) [8]

CodeStr := 'document. getElementByName("Login[username]").value="'+login+'";';
Chromium1.Browser.MainFrame.ExecuteJavaScript(CodeStr, 'about:blank', 0);
тоже неработает.. ((


ухты   (2016-07-10 14:46:00) [9]

по имени вы получаете массив элементов, в названии метода sне просто так выделил


Кирилов. А.С.   (2016-07-10 14:42:00) [10]

Я по имени и пробую присвоить данные нужным полям,
Но не выходит.. (( почему? Как правильно сделать?


ухты   (2016-07-10 14:33:00) [11]

getElement sByName, по названию не видно что возвращает?


Кирилов. А.С.   (2016-07-10 12:21:00) [12]

На других сайтах через getElementById работает без проблем, но на этом сайте
почему-то нет ID у нужных мне элементов.. ((


Наверх

Титульная страница Поиск, карта сайта Написать письмо