// If there is only one button, you can do something like:
WebBrowser1.OleObject.Document.forms.item(0).elements.item(0).click;
// This will do a click on the first element of the first <FORM>, where an // element is either <INPUT>, <SELECT> or <TEXTAREA>. // If there is more than one button, you can do something like: procedure TForm1.Button1Click(Sender: TObject);
var
ovElements: OleVariant;
i: Integer;
begin
ovElements := WebBrowser1.OleObject.Document.forms.item(0).elements;
for i := 0 to (ovElements.Length - 1) doif (ovElements.item(i).tagName = 'INPUT') and
(ovElements.item(i).type = 'SUBMIT') and
(ovElements.item(i).Value = 'Recent Charges') then
ovElements.item(i).Click;
end;
Программный код, предоставленный вами, используется для имитации клика по конкретной кнопке в форме в компоненте TWebBrowser в Delphi. Вот подробное описание, как работает этот код:
Первая часть кода демонстрирует, как кликать по первому элементу первого <FORM>:
Если в форме есть более одной кнопки, можно использовать цикл для поиска и клика нужной кнопки. Это показано во второй части кода.
Вот, как работает этот код:
ovElements := WebBrowser1.OleObject.Document.Forms.Item(0).Elements; - эта строка получает все элементы в первой форме.
Цикл for проходит по каждому элементу:
fori:=0to(ovElements.Length-1)do
Внутри цикла проверяется, является ли текущий элемент полем ввода и его типом 'SUBMIT', а также если значение поля равно имени желаемой кнопки ('Recent Charges'):
Если все условия выполняются, имитируется клик по этой кнопке.
Вот альтернативное решение с использованием метода Invoke для получения HTML-элемента и вызова его метода click:
procedureTForm1.Button1Click(Sender:TObject);vardoc:IDispatch;form:Variant;button:OleVariant;begin// Получение объекта документаdoc:=WebBrowser1.OleObject.Document;// Получение первой формыform:=doc.Forms.Item(0);// Получение кнопки с именем 'Recent Charges'button:=form.Elements.ItemByName('Recent Charges');// Если найдена, имитируется кликifVarType(button)=varDispatchthen((buttonasIHTMLInputElement).click);end;
Это подход более прямой и avoids использования свойств tagName и type. Он напрямую получает кнопку с желаемым именем и вызывает ее метод click.
В статье описывается, как нажать кнопку на веб-странице, загруженной в TWebBrowser, и предлагаются примеры кода на Delphi для выполнения этой задачи.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS