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

C# Selenium如何按顺序读取TextBox姓名列表依次填充网页表单

修正后代码实现

首先建议你在界面新增一个「开始执行」按钮,把业务逻辑写到按钮点击事件中,不要写在TextChanged事件内避免输入时误触发:

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using System.Threading;
using System.Windows;

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    } 

    // 开始执行按钮点击事件
    private void BtnStart_Click(object sender, RoutedEventArgs e)
    {
        string baseEmail = question1.Text;
        string baseRegion = country.Text;
        string baseSize = size.Text;
        // 按空格拆分姓名输入框内容,保留输入顺序,过滤空值
        string[] nameList = name.Text.Split(' ', System.StringSplitOptions.RemoveEmptyEntries);
        string targetUrl = "https://docs.google.com/forms/d/e/1FAIpQLSeI8_vYyaJgM7SJM4Y9AWfLq-tglWZh6yt7bEXEOJr_L-hV1A/viewform";

        // 顺序遍历所有姓名执行操作
        foreach (string currentName in nameList)
        {
            // 每个姓名单独初始化驱动,避免缓存影响
            ChromeDriver driver = new ChromeDriver(@"C:\webdrivers");
            try
            {
                driver.Navigate().GoToUrl(targetUrl);
                // 等待页面加载完成,可根据网络情况调整等待时长
                Thread.Sleep(1500);

                // 填入邮箱
                driver.FindElement(By.ClassName("quantumWizTextinputPaperinputInput")).SendKeys(baseEmail);
                // 填入当前循环的姓名
                driver.FindElement(By.ClassName("quantumWizTextinputPapertextareaInput")).SendKeys(currentName);
                // 按索引获取同className的不同输入框,避免定位错误
                var simpleInputs = driver.FindElements(By.ClassName("quantumWizTextinputSimpleinputInput"));
                // 填入区域
                simpleInputs[0].SendKeys(baseRegion);
                // 填入尺寸
                simpleInputs[1].SendKeys(baseSize);

                // 此处可补充表单提交代码、提交成功判断逻辑,确保当前姓名完整流程走完
                // 示例:driver.FindElement(提交按钮选择器).Click();
                Thread.Sleep(2000);
            }
            finally
            {
                // 关闭当前浏览器,再进入下一个姓名的处理
                driver.Quit();
                driver.Dispose();
            }
        }
    }

    // 原有TextChanged事件可保留用于输入校验
    private void TextBox_TextChanged_1(object sender, System.Windows.Controls.TextChangedEventArgs e) { }
    private void size_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e) { }
    private void TextBox_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e) { }
}

核心修改说明

  • 替换了无序的HashSet,改为按空格拆分的字符串数组,严格保留你在姓名输入框中输入的前后顺序
  • 把整个表单处理逻辑包裹在姓名遍历循环内部,确保前一个姓名的所有网页操作(加载、填写、提交)完成后,才处理下一个姓名
  • 修复了同className元素定位错误的问题,用FindElements获取元素列表后按索引区分区域和尺寸输入框
  • 所有输入值直接绑定对应TextBox控件属性,直接修改控件名称就能对应取值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:45:06