为什么即使我已经设置了它的值,webbrowser中的字段仍然认为是空的?

时间:2019-01-26 23:30:07

标签: vb.net visual-studio-2010

enter image description here我正在尝试使用Visual Basic自动化我们的票务系统。但是,我无法保存配置文件,因为即使我已经设置了它的值,webbrowser中的字段仍被读取为空:

enter image description here

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

我的下面的代码:

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">

enter image description here

1 个答案:

答案 0 :(得分:0)

当包含您的form的{​​{1}}未激活时,某些网页似乎会出现这种问题(这是一种在客户端的保护形式,可以避免通过编程方式插入值)。

如果您手动在其中键入值,则input会变为活动状态,因为您正在单击form的子级input。但是,如果您以编程方式进行操作,则不会触发激活,因此客户端不会采用您添加到HTML的值。

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

Focus

如果仍然不起作用,请尝试在一个命令和另一个命令之间添加WebBrowser1.Document.GetElementById("mb8a86d99-tb").Focus WebBrowser1.Document.GetElementById("mb8a86d99-tb").SetAttribute("value", "EMAIL") ,以使表单有时间实际激活自身。