首页 > 解决方案 > 为什么即使我已经设置了它的值,webbrowser 中的字段仍然被认为是空的?

问题描述

在此处输入图像描述我正在尝试使用 Visual Basic 自动化我们的票务系统。但是,我无法保存配置文件,因为即使我已经设置了它的值,webbrowser 中的字段仍然被读取为空:

在此处输入图像描述

我也尝试设置属性originalvalue等,prekeyvalue但仍然无法正常工作。但是,如果您在字段中手动键入值,它将起作用。

我的代码如下:

WebBrowser1.Document.GetElementById("mb8a86d99-tb").SetAttribute("value", "EMAIL")

以下字段信息:

<input datatype="0" id="mb8a86d99-tb" aria-required="true" role="textbox" aria-labelledby="mb8a86d99-lb" class="fld text   fld fld_req" ctype="textbox" li="mb8a86d99-img" maxlength="512" style=";width:225.0px;" async="1" ae="setvalue" type="text" value="" ov="" work="1" fldinfo="{&quot;lookup&quot;:&quot;valuelist&quot;,&quot;dsid&quot;:&quot;TSDTKTSOURCE&quot;,&quot;inttype&quot;:&quot;0&quot;,&quot;afindex&quot;:&quot;0&quot;,&quot;length&quot;:&quot;512&quot;,&quot;required&quot;:true}" title="" originalvalue="" prekeyvalue="" stoptcclick="true">

在此处输入图像描述

标签: vb.netvisual-studio-2010

解决方案


form当包含您的内容input没有被激活时,这种问题似乎出现在某些网页中(这是客户端的一种保护形式,以避免以编程方式插入值)。

如果您在其中手动键入值,则form变为活动状态,因为您单击的inputform. 但是,如果您以编程方式执行此操作,则不会触发激活,因此您添加到 HTML 的值不会被客户端获取。

您可以尝试使用Focus您输入的方法来模拟表单的激活:

WebBrowser1.Document.GetElementById("mb8a86d99-tb").Focus
WebBrowser1.Document.GetElementById("mb8a86d99-tb").SetAttribute("value", "EMAIL")

如果这仍然不起作用,请尝试Application.Wait(TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + 2))在一个命令和另一个命令之间添加一个,以让表单有时间实际激活自身。


推荐阅读