Delphi CEF4 Chromium - выполнить действие javascript

1

Я использую компонент Delphi и TChromium для автоматизации некоторых задач. Я смог заполнить формы и отправить их с помощью JavaScript следующим образом:

Chromium1.browser.MainFrame.ExecuteJavaScript
      ('document.getElementById(''LoginForm_username'').value="' +
      Ini.ReadString('config', 'usuario', '') + '"',
      Chromium1.browser.MainFrame.GetURL, 0);

Chromium1.Browser.MainFrame.ExecuteJavaScript('document.forms[0].submit()',
      Chromium1.browser.MainFrame.GetURL, 0);

Все идет нормально. Теперь я столкнулся с другой проблемой, возможно, из-за отсутствия знаний о JavaScript.

У меня есть кнопка на этом сайте, которая в коде выглядит следующим образом:

<form style="border:none;height:16px;width:16px;margin: 0px auto 0px auto;" id="pago-form" action="?r=pago/pago/formpago" method="post">                                  
    <input value="R%0AN%17%9D%C4%D8%AB%A8%27%2A%06S%01%B9.%DF%00c%DC%BFD%B5%D2%E8%C9%A9%C6%84%B7%FFa" 
    name="Pago[idserial]" id="Pago_idserial" type="hidden">                                    
    <input value="R%0AN%17%9D%C4%D8%AB%A8%27%2A%06S%01%B9.%DF%00c%DC%BFD%B5%D2%E8%C9%A9%C6%84%B7%FFa" 
    name="Pago[idplanilla]" id="Pago_idplanilla" type="hidden">                                    
    <input value="K%C7%9B%838d%15V" name="Pago[tipoprocesoagilizacion]" 
    id="Pago_tipoprocesoagilizacion" type="hidden">                                    
    <input value="%F4%1E%D8%FD%BD%ACK3" name="Pago[tipotramiteprocesoagilizacion]" 
    id="Pago_tipotramiteprocesoagilizacion" type="hidden">                                                      
    <input value="%ABv%C1%91%92%E7%D1%3E%28%1A%8E%08%CFi%B2%D9%25k%89%13%B5%5EGT9nb%FDWNa%17" 
    name="Pago[tokenCSRF]" id="Pago_tokenCSRF" type="hidden">
    <input title="Pagar Obtención Express de Pasaporte Electrónico" style="border:none;width:16px;height:16px;margin-left:-20px" 
    src="/themes/saime/imagenes/pay.png" type="image" name="yt0">                            
</form>

Теперь, если я осмотрю кнопку (ее маленькое изображение), она укажет мне на <input title=Pagar Obtención Express de Pasaporte Electrónico>

Проблема в том, что это не кнопка, и у нее нет идентификатора, поэтому я не могу щелкнуть ее по коду (я могу щелкнуть мышью). Но тогда, как я мог выполнить это действие "кнопки" кодом?

  • 0
    Я бы потерял этот путь, понюхал бы связь и сразу перешел к цели с помощью запроса POST. Это можно сделать с помощью CEF.
Теги:
chromium-embedded

1 ответ

1
Лучший ответ

Я решил эту проблему, позвонив с помощью DOM следующим образом:

         Chromium1.Browser.MainFrame.ExecuteJavaScript('document.getElementsByName(''yt0'')[0].click();',
      Chromium1.browser.MainFrame.GetURL, 0);

Поскольку элемент не имеет идентификатора, я могу найти его по имени и щелкнуть по нему. Сейчас работает =)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню