Html 如何使用delphi XE3填写web表单输入?

Html 如何使用delphi XE3填写web表单输入?,html,forms,delphi,delphi-xe3,twebbrowser,Html,Forms,Delphi,Delphi Xe3,Twebbrowser,我需要知道如何使用Delphi XE3填写web表单?我有一个带有用户名和密码的web表单,那么如何以编程方式填充它呢 该页面仅显示两个输入用户名和密码,因此如何填充和传递它们?本文介绍如何获取和设置命名元素的属性 您应该获取并设置值属性。表单元素的ID取决于您的页面 这篇文章在被问及“如何阅读”的同时,还描述了如何获取值以及如何设置值。毕竟,如果您可以执行A:=B(读取值),那么您可能也可以执行B:=A(设置值) 现在,问题中给出了页面URL,我们可以用右键单击WWW浏览器中右上角的登

我需要知道如何使用Delphi XE3填写web表单?我有一个带有用户名和密码的web表单,那么如何以编程方式填充它呢


该页面仅显示两个输入用户名和密码,因此如何填充和传递它们?

本文介绍如何获取和设置命名元素的属性

您应该获取并设置
属性。表单元素的ID取决于您的页面


这篇文章在被问及“如何阅读”的同时,还描述了如何获取值以及如何设置值。毕竟,如果您可以执行
A:=B
(读取值),那么您可能也可以执行
B:=A
(设置值)


现在,问题中给出了页面URL,我们可以用右键单击WWW浏览器中右上角的登录表单元素,然后选择“检查元素”查看其源。或者,如果浏览器不是现代的,并且菜单上没有Inspect命令,我们可以使用另一种方法,比如
查看页面源代码
,并在整个页面的源代码中查找表单。例如,其中一个元素是

<input name="txtUsername" type="text" maxlength="15"
 id="txtUsername" tabindex="1" class="inpu-field" onfocus="txtfocus();"
 onblur="txtblur();" style="color: gray; background-image: none;">

因此,我们知道表单的第一个元素的ID,我们需要获取(读取)或设置(写入)它的“值”属性。 上面的链接显示了如何在已知ID的情况下执行此操作

顺便说一句,您的页面设置错误,真正的页面是

那么您的原始页面呢,它与默认模式下的TWebBrowser MSIE6不兼容——这是为了与使用Microsoft ActiveX组件的所有书面应用程序兼容。看

如果你可以用谷歌浏览器代替TWebBrowser。 或者,您可以访问ActiveX界面作为TWebBrowser属性之一,获取新界面并关闭MSIE6兼容性

然而,“如何在twebbrowser中呈现此页面”是另一个新问题,而不是您在此处提出的问题。


事实上,我不投票以重复的形式结束这个问题的唯一原因是,上面的文章标题中没有“设置”、“编写”或“填充”,所以找到它们比找到琐碎的东西要困难一些


但是,如果页面在加载时没有变化,并且没有一些一次性保护,如验证码或唯一表单哈希代码,那么您可以通过单个HTTP请求发布所有值,而无需加载表单。

使用Internet Direct(Indy)HTTP客户机类,您可以使用HTTP post将表单值提交给服务器

如果TIdCookieManager类的实例已分配给IdHTTP客户端组件,Indy HTTP客户端还将接收和存储服务器随其响应发送的cookie

当客户端向服务器上的其他安全URL发出进一步的HTTP请求时,许多安全web应用程序都需要HTTP cookie。然后,Indy HTTP客户端将随请求一起发送cookie(如果已将TIdCookieManager分配给IdHTTP客户端组件)

因此,您可以在登录URL上发送登录POST请求,提供所需的身份验证信息,然后向下载统计URL发送GET请求以检索其HTML



关于使用ASP的特定登录表单,这里有一个关于以编程方式发送POST请求的问题:

也许您不需要填写它,而只需要发布它?如果表格不包括验证码或类似的一次性保护,您甚至可以在不加载表单的情况下提交结果。如果您只需要在后台发出简单的POST或GET HTTP请求,则绝对不应该使用
TWebBrowser
控件并以编程方式填充表单。@AndreasRejbrand他似乎启动了用户登录序列。考虑到WWW页面很少使用标准HTTP身份验证,该页面可能会使用UTL、cookie、隐藏表单或天知道是什么来做一些奇怪的事情。在这种情况下,发布登录名/密码并不困难,但了解如何进行身份验证并将其传递到以后的页面将是一个独立且相当复杂的问题。因此,像MS或其他引擎一样,将页面加载到MSIE中可能是必需的,但仍然是。我尝试使用的网页没有任何验证码,它是我的ISP网页一个基本用户名和密码,用于登录我的帐户并检查我使用了多少下载,所以我正在尝试制作一个自动记录并显示所用下载的应用程序,也就是说,你能在你的问题中包含登录表单的HTML代码吗?解决方案取决于身份验证方法,因此这将非常有用。演示如何操作??顺便说一句,用户名和密码部分不能在twebbrowser中显示!怎么读啊!如果它们“无法显示”,那么这是另一个问题。如果您的用户看不到单击和输入文本的位置,那么您就没有阅读的内容。另外问一个问题,如何在Delphi+MSIE中加载该页面。或者你可以使用Delphi+Chrome或Delphi+ThtmlViewer如果我使用Internet Explorer它没有问题,但我使用Delphi的twebbrowser它没有!!这就是问题所在!然后,这是另一个问题,不是在用户输入值后如何读取这些值,而是如何在TWebBrowser中呈现此页面,以便用户可以这样做。这是另一个问题。同时尝试在MSIE6中检查该页面,我稍微记得默认情况下TWebBrowser在MSIE6模式下工作,而不是在现代模式下,为了兼容性。如果您的站点与MSIE6不兼容,那么这可能就是问题所在。可能是这个人甚至无法理解哪个页面是实际的登录表单,您建议他进行跨域cookies处理和复合跨域页面手动解析。虽然这应该是最有效的方法,但我不认为他能做到。@Arioch'The我没有提到或建议“跨域cookie”处理任何你没有提到的事情,但该页面使用mquite不同域的登录表单,登录期间设置的cookie必须用于或