![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Авторизация на сайте [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 у нужных мне элементов.. ((