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

C# 如何实现点击按钮动态生成文本框列表并通过Selenium提交内容

实现动态增删文本框+Selenium提交的方案

你现有代码的核心问题是完全没有和UI控件生成逻辑绑定,每次点击按钮都重复创建了一个无意义的静态字符串列表,也没有生成新的文本框控件,逻辑和需求完全不匹配。

以下是WPF框架下的可运行实现方案,如果你用的是Winform,仅需替换对应控件属性、布局添加逻辑即可,核心思路通用:

第一步:定义全局存储容器

在窗体类的全局范围定义两个容器,分别存储动态生成的文本框、承载动态控件的布局容器:

// 存储所有动态生成的采购项文本框
private List<TextBox> _groceryItemBoxes = new List<TextBox>();
// 提前在前台XAML中放一个名为ItemPanel的StackPanel,作为动态控件的承载容器

第二步:实现+按钮点击新增文本框逻辑

替换你原有plusbutton_Click的代码:

private void plusbutton_Click(object sender, RoutedEventArgs e)
{
    // 1. 实例化新文本框,设置基础样式
    var newTextBox = new TextBox
    {
        Margin = new Thickness(0, 5, 0, 5), // 上下预留间距避免控件粘在一起
        PlaceholderText = "请输入采购内容,例如:买鸡蛋"
    };
    
    // 2. 把新文本框添加到UI布局、全局存储列表
    ItemPanel.Children.Add(newTextBox);
    _groceryItemBoxes.Add(newTextBox);
}

如果需要支持删除单项,可以在创建文本框的同时生成一个删除按钮,和文本框放在同一行的横向布局容器中,点击删除按钮时同步移除UI中的控件和全局列表里的对应项即可。

第三步:实现Selenium提交逻辑

需要提交内容到网页时,遍历全局列表获取所有非空输入内容,调用Selenium的SendKeys方法发送即可:

private void SubmitBtn_Click(object sender, RoutedEventArgs e)
{
    // 你的Selenium驱动初始化逻辑保留即可,以下为示例
    // ChromeDriver driver = new ChromeDriver();
    // driver.Navigate().GoToUrl("你的目标采购网页地址");
    
    // 遍历所有采购文本框,发送非空内容
    foreach (var textBox in _groceryItemBoxes)
    {
        var itemContent = textBox.Text.Trim();
        if (string.IsNullOrEmpty(itemContent)) continue;
        
        // 替换为你实际的网页元素定位逻辑
        var targetInput = driver.FindElement(By.Id("目标网页输入框的元素ID"));
        targetInput.SendKeys(itemContent);
        // 如需逐个提交可以加回车:targetInput.SendKeys(Keys.Enter);
    }
}

内容的提问来源于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.25 19:15:04