You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用VB.NET+WebView自动化JS网站的下拉框选择、文本填充与提交

解决方案

你遇到的核心问题有两个:一是JavaScript方法名拼写错误(getElementByid应为getElementById,注意大写的D);二是直接修改元素值后未触发页面绑定的事件(如下拉框的onchange),导致页面逻辑未生效。以下是完整的实现步骤和代码:

关键修正与操作步骤

  1. 修正JavaScript拼写错误
    原代码中的document.getElementByid是错误写法,正确应为document.getElementById。

  2. 处理「Directory Number」下拉框
    仅设置下拉框value为numplan.dnorpattern不够,必须手动触发onchange事件——因为页面的onchange绑定了getUtilityListValues和onSearchFieldChange函数,这是页面逻辑正常运行的必要条件。

  3. 处理「ends with」下拉框
    你提供的HTML中第二个下拉框缺失了<select>标签,根据同页面的hidden输入框searchLimVal0推测,该下拉框的id应为searchLim0(这类系统通常遵循统一命名规则)。同样需要设置value为endsWith并触发onchange事件。

  4. 填充文本框并触发内容变化事件
    填充searchString0后,建议触发input事件,确保页面能识别到内容已更新。

  5. 触发搜索操作
    直接调用按钮绑定的onFindSubmit()函数,比模拟点击按钮更可靠。

VB.NET 完整代码示例

假设你使用的是WebView2控件,以下是可直接复用的实现代码:

' 等待WebView初始化完成后执行自动化操作
Private Async Sub WebView21_CoreWebView2InitializationCompleted(sender As Object, e As Microsoft.Web.WebView2.Core.CoreWebView2InitializationCompletedEventArgs) Handles WebView21.CoreWebView2InitializationCompleted
    ' 1. 选择「Directory Number」下拉框
    Await WebView21.ExecuteScriptAsync("
        const searchField = document.getElementById('searchField0');
        searchField.value = 'numplan.dnorpattern';
        searchField.dispatchEvent(new Event('change'));
    ")

    ' 等待页面处理下拉框切换逻辑(可根据页面响应速度调整延时)
    Await Task.Delay(500)

    ' 2. 选择「ends with」下拉框(若实际id不是searchLim0,替换为真实id即可)
    Await WebView21.ExecuteScriptAsync("
        const searchLim = document.getElementById('searchLim0');
        searchLim.value = 'endsWith';
        searchLim.dispatchEvent(new Event('change'));
    ")

    Await Task.Delay(300)

    ' 3. 填充文本框
    Await WebView21.ExecuteScriptAsync("
        const searchInput = document.getElementById('searchString0');
        searchInput.value = '2399';
        searchInput.dispatchEvent(new Event('input'));
    ")

    Await Task.Delay(300)

    ' 4. 执行搜索
    Await WebView21.ExecuteScriptAsync("onFindSubmit();")
End Sub

额外注意事项

  • 若第二个下拉框的实际id不是searchLim0,可通过浏览器开发者工具(F12)查看该<select>标签的真实id,替换代码中对应的值。
  • 调整Task.Delay的延时时间,根据页面加载速度灵活设置,避免因页面未处理完前一步操作导致失败。
  • 确保页面完全加载后再执行自动化操作,可通过监听CoreWebView2.DOMContentLoaded事件判断页面加载状态。

内容的提问来源于stack exchange,提问作者DLONG22

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 10:20:35