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

如何使用C#结合Selenium从文本框输入列表随机选取内容发送至网页

问题根因

你的代码存在3个核心错误导致无法实现随机选单条发送的效果:

  • 随机逻辑写在TextBox_TextChanged事件中,生成的随机索引、文本列表都是局部变量,按钮点击事件中完全无法访问这些值
  • 没有对多行文本框的内容按行拆分,直接将整个文本内容作为唯一元素存入列表,无论怎么随机永远只能拿到全部内容
  • 局部创建Random实例,如果触发频率过高会出现重复随机结果的问题

调整后的完整代码

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

namespace emails
{
    public partial class MainWindow : Window
    {
        // 类级别随机数实例,避免重复随机
        private readonly Random _random = new Random();
        // 存储拆分后的所有输入行
        private List<string> _inputLines = new List<string>();

        public MainWindow()
        {
            InitializeComponent();
        }

        private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
        {
            // 按换行符拆分文本,过滤空行、空白行后存入列表
            _inputLines = question1.Text
                .Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries)
                .FindAll(line => !string.IsNullOrWhiteSpace(line));
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            // 没有输入内容直接返回
            if (_inputLines.Count == 0) return;
            
            // 随机取一条内容
            int randomIndex = _random.Next(_inputLines.Count);
            string contentToSend = _inputLines[randomIndex];

            ChromeDriver driver = new ChromeDriver(@"C:\webdrivers");
            string url = "https://accounts.google.com/signin/v2/identifier?continue=https%3A%2F%2Fmail.google.com%2Fmail%2F&service=mail&sacu=1&rip=1&flowName=GlifWebSignIn&flowEntry=ServiceLogin";
            
            driver.Navigate().GoToUrl(url);
            driver.FindElement(By.ClassName("whsOnd")).SendKeys(contentToSend); 
            Thread.Sleep(2000);

            // 可补充后续操作逻辑、驱动释放逻辑
        }
    }
}

关键修改说明

  • 新增类级别的_random和_inputLines字段,跨事件共享数据
  • 文本框内容变更时自动按行拆分、过滤无效空行,更新可用内容列表
  • 按钮点击时先校验是否有可用内容,再随机取单条内容发送
  • 清理了原代码中未使用的冗余变量drv、th

内容的提问来源于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.28 23:00:00