首页 > 解决方案 > 如何按从 1 到 10 的顺序选择一个值

问题描述

我正在使用 C# 和 Selenium,我需要将密钥发送到一个文本字段中,它需要选择一个name(我在文本框中提供的名称),然后在第一个完成后选择然后发送第一个(带有发送密钥)一个它会移动到第二个,依此类推。到目前为止我已经这样做了(但这会随机选择一个名字,而不是按照从头到尾的顺序)

var random = new Random();

//this is the textbox in which I place the "names"\\
        var Names = question1.Text.Split();

        int index = random.Next(Names.Length);

        string randomName = Names[index];`

这只会选择我放入文本框中的随机值,所以我需要它,但问题是如果我在 25/50 之后发送让我们说 100 个名称,这些名称将开始重复,导致错误所以这就是为什么我需要它来按顺序选择名称。

标签: c#selenium

解决方案


看起来您需要先使用 shuffle 算法,然后创建一个 shuffle 名称队列:

var shuffledNames = question1.Text.Split().OrderBy(_ => Guid.NewGuid());
var queueOfShuffledNames = new Queue<string>(shuffledNames);
        
Console.WriteLine($"Queue of shuffled names: {string.Join(", ", queueOfShuffledNames)}");
Console.WriteLine($"Selected name: {queueOfShuffledNames.Dequeue()}");
Console.WriteLine($"Queue of shuffled names: {string.Join(", ", queueOfShuffledNames)}");

链接:https ://dotnetfiddle.net/9Hfkbt

如果您需要从原始集合中删除重复项并限制队列中的项目数,请按shuffledNames以下方式创建:

var shuffledNames = question1.Text.Split()
    .OrderBy(_ => Guid.NewGuid())
    .Distinct()
    .Take(10);

推荐阅读