Конференция "Сети" » Работа с Web-платформой Olymp Trade
 
  • TraderProg © (21.02.18 08:58) [40]
    Форум был недоступен долго (((

    В общем вчера намучился в том числе пытался разные варианты  FEATURE_BROWSER_EMULATION пробовать, но так и не заработало на 2-м ВПС - то есть платформа видна, цена движется, нажимаются вспомогательные кнопки, но самые главные на отрез не хотят нажиматься. Похоже блокируется закачка JavaScript или их исполнение, хотя в настройках IE их исполнение разрешил - поставил галочку в настройках. По 1-му ВПСу тоже лучше не стало - страница так и не хочет загружаться.
  • Redmond (21.02.18 11:06) [41]
    гм... гм... Если например обновить IE? Какая там версия-то?
  • TraderProg © (21.02.18 11:23) [42]
    в обоих ВПСах 11-ая, а какая именно подверсия позже могу сказать.
  • TraderProg © (21.02.18 15:52) [43]
    В 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? Я ни разу в своей жизни его не обновлял, какая система бы не стояла - как то так обходился.
  • TraderProg © (21.02.18 16:23) [44]
    2-й сервак обновил - установилось только Силверлайт. Не помогло.

    А как-то можно не с самим компонентом-браузером в программе работать, а непосредственно с установленным браузером (Хром, Яндекс-браузер или Мозилла) - также читать цену и воздействовать на кнопки в открытой странице?
  • TraderProg © (21.02.18 20:40) [45]
    В общем установил все возможные обновления на оба сервера - без результата.
    Вижу пока 2 пути в каком направлении копать, если отбросить настройку IE:
    1. Все таки попробовать TChromium, на нем без проблем можно исполнять яваскрипты, но невозможно получить объекты DOM (исходя из пролистывания сайтов по этой теме), а так как невозможно получить объекты DOM, то непонятно как считывать цену и нажимать на кнопки.
    2. Писать расширение (плагин) для браузера Chrome на чистом Javascript (файлы json), там вроде как возможна работа с объектами DOM, но это уже не под Delphi, и даже не под любой другой IDE с графическим интерфейсом. Только блокнот, только хардкор.

    Поправьте меня, если я все неправильно понял и наговорил крамольных мыслей.
  • TraderProg © (21.02.18 21:20) [46]
    Еще одно интересное наблюдение: запустил на 2-м ВПСе параллельно браузер Хром и мою прогу с TWebBrowser. Нажимаю руками кнопки "Выше", "Ниже", и в этот момент в моей программе ни с того ни с чего генерируется та же самая ошибка сценария. это при том что программа просто стояла и не выполняла никаких действий - просто был включен компонент TWebBrowser c загруженной страницей платформы.
  • ухты © (21.02.18 21:52) [47]
    прикольная тема))

    за это время уже можно было либо наваять бот на том же шарпе, либо взять что то типа электрона и на скриптах с хрониумом (не трогая делфи), либо уже наконец прочитать как дебажить скрипты в браузерах, потом понять что не хватает и починить то что уже наваяли.
    хотя зачем лозе баян, то есть боту браузер так и не понятно..

    продолжаем кушать попкорн))
  • TraderProg © (22.02.18 05:09) [48]
    Вот и тролли подятнулись. Я не проф. прог-т, а новичок, так что многое непонятно и скорее всего что-то не так делаю и поэтому прошу помощи в решении вопроса. А если ты не тролль и видишь как решить проблему то пож-та помоги.

    P.S. у Олимптрейда есть только Веб-платформа, так что без браузера не обойтись. Был бы у них Metetrader 4 или 5 я бы сюда вообще не писал.
  • TraderProg © (22.02.18 05:11) [49]
    В плане C# - выйдет тоже самое так как он использует тот же компопнент WebBrowser, базирующийся на IE. А IE упорно не хочет работать как надо на VPS
  • ухты © (22.02.18 13:32) [50]
    Новичку надо читать и учиться, а вы пишите какуюто ерунду которую даже комментировать не интересно.
    Что бы вам помочь надо чтобы и вы помогли. Я может быть и поковырялся у них и может быть помог вам, но там надо регаться, а мне это не к чему. Вам бы сделать тестовый аккаунт, для людей. Так и с показом ошибок, прицепились к картинкам, вы кому проще делаете себе или тем кто может помочь? ну раз вам в лом, то и другим особо не интересно.
  • ухты © (22.02.18 13:32) [50]
    Новичку надо читать и учиться, а вы пишите какуюто ерунду которую даже комментировать не интересно.
    Что бы вам помочь надо чтобы и вы помогли. Я может быть и поковырялся у них и может быть помог вам, но там надо регаться, а мне это не к чему. Вам бы сделать тестовый аккаунт, для людей. Так и с показом ошибок, прицепились к картинкам, вы кому проще делаете себе или тем кто может помочь? ну раз вам в лом, то и другим особо не интересно.
  • ухты © (22.02.18 13:32) [50]
    Новичку надо читать и учиться, а вы пишите какуюто ерунду которую даже комментировать не интересно.
    Что бы вам помочь надо чтобы и вы помогли. Я может быть и поковырялся у них и может быть помог вам, но там надо регаться, а мне это не к чему. Вам бы сделать тестовый аккаунт, для людей. Так и с показом ошибок, прицепились к картинкам, вы кому проще делаете себе или тем кто может помочь? ну раз вам в лом, то и другим особо не интересно.
  • TraderProg © (22.02.18 18:23) [53]
    В техподдержку пока не писал - сомневаюсь что смогут помочь.
    Сейчас вожусь с Tchromium.
    Нашел как в нем работать с Cookies (он в отличие от ВебБраузера не умеет автоматом запоминать учетные данные). Эта новая проблема решена.

    Сейчас думаю как сделать querySelectorAll();
    Там есть только Node:= Document.GetElementById('id элемента');

    Node и Document в разделе var:
     Document: ICefDomDocument;
     Node: ICefDomNode;

    Проблема в том что id у нужных элементов нет, а метода querySelectorAll как в WebBrowser не существует
  • TraderProg © (22.02.18 18:35) [54]
    Еще в Хромиуме работает такая команда:
    code:='alert("Hello!");';
    Chromium1.Browser.GetMainFrame.ExecuteJavaScript(code,'',0);

    То есть исполнение яваскрипта заданного строкой. Только как выцедить сам яваскрипт, работающий при нажатии кнопки?
    Это как вариант нажатия кнопок без использования DOM
  • TraderProg © (22.02.18 19:34) [55]
    Таак. Пол-дела можно сказать сделано. Разобрался как в 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;

  • TraderProg © (22.02.18 19:36) [56]
    Теперь надо понять как цену считывать в TChromium, Пока что проблема что Chromium1.Browser.MainFrame.ExecuteJavaScript(CodeStr, 'about:blank', 0) не возвращает элемент DOM чтобы прочитать innerHTML   ....
  • TraderProg © (22.02.18 20:44) [57]
    Похоже опять зашел в тупик. Думал вся сложность будет с нажатием кнопок, а нет получить innerHTML содержащую цену посредством процедуры ExecuteJavaScript вообще не знаю как. Иными словами ищем элемент DOM с помощью внутреннего javascript, а вот как у этого "встроенного" в javascript DOM-элемента получить строку innerHTML ? Да уж. загадка  (((

    Всех читающих ветку с наступающим 23 февраля !!!
  • Styx © (22.02.18 21:17) [58]
    В CEF4Delphi есть пример работы с DOM
  • TraderProg © (22.02.18 22:16) [59]
    Styx, можешь сузить круг поиска в CEF4Delphi, где примерно искать, в контексте выше-приведенных задач?

    У меня установлен CEF3Delphi (3-я версия), не знал что уже есть 4-ая.

    В принципе только что решил и 2-ю проблему "костылями" посредством транслирования значения в консоль как в этом примере: http://www.cyberforum.ru/delphi-networks/thread1222757.html

    Но может быть есть более элегантное решение? Был бы там доступен метод querySelectorAll непосредственно для Node, а также селекторы для класса и тэгов, была бы тогда вообще КРАСОТА.

    Как мне в Delphi заменить 3-ю версию на 4-ую чтобы не возникло никаких ошибок?
 
Конференция "Сети" » Работа с Web-платформой Olymp Trade
Есть новые Нет новых   [118679   +72][b:0][p:0.001]