C# Selenium如何按顺序选取姓名列表值发送至文本框避免重复
实现按顺序选取姓名的C#代码方案
- 新增一个类级别的索引变量,记录当前已经用到第几个姓名,避免每次调用方法时索引重置
- 每次调用时读取当前索引对应的姓名,之后索引自增
- 可以根据业务需求增加索引越界的处理逻辑(比如循环从头开始、或者提示姓名已全部用完)
首先在你的Selenium操作类的成员位置定义索引变量,不要放在方法内部:
private int _currentNameIndex = 0;
替换原有随机选取逻辑的代码如下:
// 分割文本框中的姓名列表 var names = question1.Text.Split(); // 防止索引越界的判断,可根据业务调整 if (_currentNameIndex >= names.Length) { // 可选逻辑1:全部姓名用完后重置索引,从头开始循环 _currentNameIndex = 0; // 可选逻辑2:抛出提示/终止操作 // throw new InvalidOperationException("预设姓名已全部使用完毕"); } // 按顺序取当前索引对应的姓名 string currentName = names[_currentNameIndex]; // 索引自增,下次取下一个 _currentNameIndex++; // 后续Selenium发送按键的逻辑不变 // 示例:textBoxElement.SendKeys(currentName);
原来的随机选取逻辑重复是因为生日悖论效应:从100个不重复元素中随机取值,当取到40次左右时出现重复的概率就已经超过90%,完全符合你遇到的25-50次就重复的现象。换成固定顺序遍历的方案可以完全避免重复问题,直到所有姓名都用完为止。
内容的提问来源于stack exchange,提问作者golden leo
相关产品推荐
相关产品推荐

