-
Форум был недоступен долго (((
В общем вчера намучился в том числе пытался разные варианты FEATURE_BROWSER_EMULATION пробовать, но так и не заработало на 2-м ВПС - то есть платформа видна, цена движется, нажимаются вспомогательные кнопки, но самые главные на отрез не хотят нажиматься. Похоже блокируется закачка JavaScript или их исполнение, хотя в настройках IE их исполнение разрешил - поставил галочку в настройках. По 1-му ВПСу тоже лучше не стало - страница так и не хочет загружаться.
-
гм... гм... Если например обновить IE? Какая там версия-то?
-
в обоих ВПСах 11-ая, а какая именно подверсия позже могу сказать.
-
В 1-м ВПСе (где вообще страница с платформой не открывается): Версия: 11.0.9600.18053 Версия обновления: 11.0.24 (KB3093983)
Во 2-м ВПСе (где только скрипты на главных кнопках не работают): Версия: 11.0.9600.18861 Версия обновления: 11.0.49 (KB4052978)
На домашнем компе (где все нормально работает на данный момент): Версия: 11.248.16299.0 Версия обновления: 11.0.51 (KB4074736)
У обоих ВПСов: Windows Server 2012 R2 У меня винда - 10-ка.
Может действительно дело в обновлении. Как обновлять браузер IE? Я ни разу в своей жизни его не обновлял, какая система бы не стояла - как то так обходился.
-
2-й сервак обновил - установилось только Силверлайт. Не помогло.
А как-то можно не с самим компонентом-браузером в программе работать, а непосредственно с установленным браузером (Хром, Яндекс-браузер или Мозилла) - также читать цену и воздействовать на кнопки в открытой странице?
-
В общем установил все возможные обновления на оба сервера - без результата. Вижу пока 2 пути в каком направлении копать, если отбросить настройку IE: 1. Все таки попробовать TChromium, на нем без проблем можно исполнять яваскрипты, но невозможно получить объекты DOM (исходя из пролистывания сайтов по этой теме), а так как невозможно получить объекты DOM, то непонятно как считывать цену и нажимать на кнопки. 2. Писать расширение (плагин) для браузера Chrome на чистом Javascript (файлы json), там вроде как возможна работа с объектами DOM, но это уже не под Delphi, и даже не под любой другой IDE с графическим интерфейсом. Только блокнот, только хардкор.
Поправьте меня, если я все неправильно понял и наговорил крамольных мыслей.
-
Еще одно интересное наблюдение: запустил на 2-м ВПСе параллельно браузер Хром и мою прогу с TWebBrowser. Нажимаю руками кнопки "Выше", "Ниже", и в этот момент в моей программе ни с того ни с чего генерируется та же самая ошибка сценария. это при том что программа просто стояла и не выполняла никаких действий - просто был включен компонент TWebBrowser c загруженной страницей платформы.
-
прикольная тема))
за это время уже можно было либо наваять бот на том же шарпе, либо взять что то типа электрона и на скриптах с хрониумом (не трогая делфи), либо уже наконец прочитать как дебажить скрипты в браузерах, потом понять что не хватает и починить то что уже наваяли. хотя зачем лозе баян, то есть боту браузер так и не понятно..
продолжаем кушать попкорн))
-
Вот и тролли подятнулись. Я не проф. прог-т, а новичок, так что многое непонятно и скорее всего что-то не так делаю и поэтому прошу помощи в решении вопроса. А если ты не тролль и видишь как решить проблему то пож-та помоги.
P.S. у Олимптрейда есть только Веб-платформа, так что без браузера не обойтись. Был бы у них Metetrader 4 или 5 я бы сюда вообще не писал.
-
В плане C# - выйдет тоже самое так как он использует тот же компопнент WebBrowser, базирующийся на IE. А IE упорно не хочет работать как надо на VPS
-
Новичку надо читать и учиться, а вы пишите какуюто ерунду которую даже комментировать не интересно. Что бы вам помочь надо чтобы и вы помогли. Я может быть и поковырялся у них и может быть помог вам, но там надо регаться, а мне это не к чему. Вам бы сделать тестовый аккаунт, для людей. Так и с показом ошибок, прицепились к картинкам, вы кому проще делаете себе или тем кто может помочь? ну раз вам в лом, то и другим особо не интересно.
-
Новичку надо читать и учиться, а вы пишите какуюто ерунду которую даже комментировать не интересно. Что бы вам помочь надо чтобы и вы помогли. Я может быть и поковырялся у них и может быть помог вам, но там надо регаться, а мне это не к чему. Вам бы сделать тестовый аккаунт, для людей. Так и с показом ошибок, прицепились к картинкам, вы кому проще делаете себе или тем кто может помочь? ну раз вам в лом, то и другим особо не интересно.
-
Новичку надо читать и учиться, а вы пишите какуюто ерунду которую даже комментировать не интересно. Что бы вам помочь надо чтобы и вы помогли. Я может быть и поковырялся у них и может быть помог вам, но там надо регаться, а мне это не к чему. Вам бы сделать тестовый аккаунт, для людей. Так и с показом ошибок, прицепились к картинкам, вы кому проще делаете себе или тем кто может помочь? ну раз вам в лом, то и другим особо не интересно.
-
В техподдержку пока не писал - сомневаюсь что смогут помочь. Сейчас вожусь с Tchromium. Нашел как в нем работать с Cookies (он в отличие от ВебБраузера не умеет автоматом запоминать учетные данные). Эта новая проблема решена.
Сейчас думаю как сделать querySelectorAll(); Там есть только Node:= Document.GetElementById('id элемента');
Node и Document в разделе var: Document: ICefDomDocument; Node: ICefDomNode;
Проблема в том что id у нужных элементов нет, а метода querySelectorAll как в WebBrowser не существует
-
Еще в Хромиуме работает такая команда: code:='alert("Hello!");'; Chromium1.Browser.GetMainFrame.ExecuteJavaScript(code,'',0);
То есть исполнение яваскрипта заданного строкой. Только как выцедить сам яваскрипт, работающий при нажатии кнопки? Это как вариант нажатия кнопок без использования DOM
-
Таак. Пол-дела можно сказать сделано. Разобрался как в TChromium нажать на кнопку. Вот код: procedure TForm1.Button4Click(Sender: TObject);
var
CodeStr: string;
begin
if Assigned(Chromium1.Browser) and Assigned(Chromium1.Browser.Mainframe) then
begin
CodeStr := 'document.querySelectorAll(\"#deal_controls > div > div.deal-form > div.state-block.js_tu_deal_buttons.deal-form__item.deal-form__risk-free > div > div > div.container.-up > button > span.text\").item(0).click();';
Chromium1.Browser.MainFrame.ExecuteJavaScript(CodeStr, 'about:blank', 0);
end;
end;
-
Теперь надо понять как цену считывать в TChromium, Пока что проблема что Chromium1.Browser.MainFrame.ExecuteJavaScript(CodeStr, 'about:blank', 0) не возвращает элемент DOM чтобы прочитать innerHTML ....
-
Похоже опять зашел в тупик. Думал вся сложность будет с нажатием кнопок, а нет получить innerHTML содержащую цену посредством процедуры ExecuteJavaScript вообще не знаю как. Иными словами ищем элемент DOM с помощью внутреннего javascript, а вот как у этого "встроенного" в javascript DOM-элемента получить строку innerHTML ? Да уж. загадка (((
Всех читающих ветку с наступающим 23 февраля !!!
-
В CEF4Delphi есть пример работы с DOM
-
Styx, можешь сузить круг поиска в CEF4Delphi, где примерно искать, в контексте выше-приведенных задач? У меня установлен CEF3Delphi (3-я версия), не знал что уже есть 4-ая. В принципе только что решил и 2-ю проблему "костылями" посредством транслирования значения в консоль как в этом примере: http://www.cyberforum.ru/delphi-networks/thread1222757.htmlНо может быть есть более элегантное решение? Был бы там доступен метод querySelectorAll непосредственно для Node, а также селекторы для класса и тэгов, была бы тогда вообще КРАСОТА. Как мне в Delphi заменить 3-ю версию на 4-ую чтобы не возникло никаких ошибок?
|