Почему TWebbrowser IHTMLElement.click завершается ошибкой, а щелчок мышью - успешным - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь автоматически заполнить веб-страницу. Заполнение элементов ввода и навигация с помощью кнопок работает нормально. Просто последняя кнопка «Сохранить» не срабатывает при программном нажатии на нее, а при щелчке мышью это происходит успешно. Кнопка «Сохранить» содержит Javascript. В документе это выглядит так:

<a title="Enregistrer / Save"
 class="btn--icon icon-save ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"
 id="_save"
 onclick="
  $('#overlayLoading').dialog('open');
  $('#form_model').attr('action', 'https://<some url>');
  $('#form_model').submit();"
 abp="1909">
<span
 class="ui-button-text"
 abp="1910">Enregistrer<br
 abp="1911">
 <span
  lang="en"
  abp="1912">Save
 </span>
 </span>
</a>

Я пробовал 3 разных подхода:

Первый подход:

  1. Найдите IHTMLelement с идентификатором "_save" и выполните .click()

  2. Navigate() на URL, который встроен в элемент

  3. Выполнение JavaScript следующим образом

    var
      Script: string;
      DocPtr: IHTMLDocument2;
      WinPtr: IHTMLWindow2;
    
    Script :=
        '$(''#overlayLoading'').dialog(''open'');'+
        '$(''#form_model'').attr(''action'', ''https://<some url>'');'
        '$(''#form_model'').submit();';
    if Supports(WB.Document, IHTMLDocument2, DocPtr) and
      Supports(DocPtr.parentWindow, IHTMLWindow2, WinPtr) then
       WinPtr.execScript(Script, 'javascript');
    

Кажется, что все 3 метода работают, но веб-сервер возвращает страницу с ошибкой. Когда я вместо этого нажимаю мышью на кнопку, представленную в TWebBrowser, веб-сервер возвращает успех.

Чем физический щелчок отличается от программного щелчка?

...