【问题标题】:Fill HTML form via TWebBrowser in Delphi on Android在 Android 上的 Delphi 中通过 TWebBrowser 填写 HTML 表单
【发布时间】:2023-02-08 15:28:32
【问题描述】:

在网站的<form> 上,我想设置<input> 的文本并使用TWebBrowser 提交该表单。我希望 Android 上的 Delphi 类似于 this answer,但这只适用于 Windows。

【问题讨论】:

  • 您链接到的代码不适用于 Android,因为它适用于 Windows。您应该可以使用 ExecuteJavascript 方法使用 Javascript 命令填写相关字段,例如这个 Javascript:document.getElementById("nameofid").value = "My value";。如果您在解决问题时遇到问题,请使用您尝试过的代码更新您的问题
  • 如果您能帮我在 Delphi Android 的 twebbrowser 中发送和提交一个字符串到该字段,我将不胜感激。
  • 您的链接答案中已经有一个重要的 comment to the question:如果您可以使用 HTTP POST request 提交所有需要的数据,为什么要通过 HTTP GET 请求网站?并且请不要使用 cmets 来重复您已经提出的问题。
  • 谢谢 但是当我使用你说的代码时我得到了这个错误......我正在使用 Delphi 11.1 for Android 错误:[DCC 错误] Unit1.pas(81):E2003 未声明的标识符:'IHTMLDocument2'[DCC 错误] Unit1.pas (82): E2003 未声明的标识符: 'IHTMLFormElement' [DCC 错误] Unit1.pas(84): E2003 未声明的标识符: 'IHTMLElementCollection'

标签: android forms delphi twebbrowser


【解决方案1】:

您链接到的代码仅适用于 Windows,因为它使用依赖于 Microsoft IE ActiveX 的 VCL Webbrowser 组件及其代码所依赖的引擎 (MSHTML)(通过使用 IHTMLElementCollection 等组件和接口)。

对于跨平台解决方案,如果您正在使用 FMX Webbrowser 组件或其他第三方跨平台 webbrowser for Delphi,则可以使用其函数来执行 JavaScript(对于 FMX Webbrowser 为“EvaluateJavaScript”,如果您正在使用“ExecuteJavascript”来自 TMS Software 的 TMSFNCWebBrowser),目的是通过 JavaScript DOM 代码编辑和填写甚至提交 HTML 表单。

这是一个优秀的跨平台解决方案,你必须制定一个 JavaScript 代码 sn-p 并将其放入“EvaluateJavaScript”,注意分隔符和字符串的长度,例如以下用于填充字段的代码(带有id "username") 和值 "foo" 并提交表单(id "myform"):

procedure FillForm;
begin
Webbrowser1.EvaluateJavaScript('document.getElementById(''username'').value="foo";' + 'document.getElementById(''myform'').submit();');
end;

否则,如果您是包含该表单的网站的开发人员或者您知道它是如何处理的(操作页面、请求类型和参数名称),那么您可以简单地通过 REST 请求发送数据。只需使用 REST 客户端库并制定对操作页面的请求,然后实现用于处理收到的响应的代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-18
    • 2015-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多