vb.net - 为什么即使我已经设置了它的值,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="{"lookup":"valuelist","dsid":"TSDTKTSOURCE","inttype":"0","afindex":"0","length":"512","required":true}" title="" originalvalue="" prekeyvalue="" stoptcclick="true">
解决方案
form
当包含您的内容input
没有被激活时,这种问题似乎出现在某些网页中(这是客户端的一种保护形式,以避免以编程方式插入值)。
如果您在其中手动键入值,则form
变为活动状态,因为您单击的input
是form
. 但是,如果您以编程方式执行此操作,则不会触发激活,因此您添加到 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))
在一个命令和另一个命令之间添加一个,以让表单有时间实际激活自身。
推荐阅读
- angular - 我想在我的角度应用程序中有一个带有标签的子菜单
- java - 如何在滚动期间停止更改回收站视图中的项目数据
- aws-lambda - 无服务器 Lambda monorepo 项目仅部署更改的文件自定义 CI 文件
- flutter - 如何在画布上显示视频?
- rest - 我应该为业务逻辑失败抛出 400 或 500 服务错误吗?
- ruby-on-rails - 将 MODEL_id 传递给另一个模型参数
- c# - 如何在 C# 中获取 Blazor 的事件?
- linux - Using hexdump and how to find associated character?
- intellij-idea - intellij“新分支”菜单项未激活
- amazon-web-services - 在 eks 节点上安装 nvidia 驱动程序