Нужна помощь по Selenium на C#
Имеется следующая задача по написанию автотеста на C#: необходимо перейти по ссылке, в открывшейся странице сгенерировать 5 раз персональный идентификационный номер. В каждом сгенерированном номере необходимо проверить на чётность/нечётность последнюю цифру, и соответственно вывести на консоль результат - чётный или нет. Реализовал я это следующим образом:
private static void Main()
{
IWebDriver driver = new ChromeDriver();
driver.Navigate().GoToUrl("http://generatory.it/");
driver.Manage().Window.Maximize();
int count = 0;
do
{
IWebElement generateNewPesel = driver.FindElement(By.XPath("//*[@onclick = 'setGeneratedPesel()']"));
generateNewPesel.Click();
string Pesel = driver.FindElement(By.XPath("//*[@id = 'peselBox']")).Text;
char[] peselArray = Pesel.ToCharArray();
if (peselArray[10] % 2 == 0)
{
Console.WriteLine("The element is even");
count++;
}
else
{
Console.WriteLine("The element is odd");
count++;
}
} while (count <= 4);
В дополнение к вышеописанному заданию необходимо добавить в код сравнение - отличается ли каждый новый сгенерированный номер от предыдущего. И вот с этим сранением у меня тупик. Теоретически я мог бы каждый сгенерированный номер записывать в отдельную переменную и затем просто сранивать, например при помощи метода string.Compare, но как по мне это получится слишком много строчек кода и будет это всё выглядеть нелаконично.
Знающие, подскажите пожалуйста, возможно ли к уже написанному мной коду прилепить сравнение в каждой итерации? Ну или как-то по другому. Заранее благодарен всем откликнувшимся.
Ответы (1 шт):
Можно просто получить числа в массив
IWebElement generateNewPesel = driver.FindElement(By.XPath("//*[@onclick = 'setGeneratedPesel()']"));
IWebElement peselElement = driver.FindElement(By.Id("peselBox"));
int[] numbers = new int[4];
for (int i = 0; i < numbers.Length; i++)
{
generateNewPesel.Click();
numbers[i] = peselElement.Text[^1] - '0'; // получение числа из цифры символа
}
Console.WriteLine(string.Join(" ", numbers));
А теперь сравнивайте, проверяйте на четность, что угодно с ними делайте.
Хотя-бы вот четность:
for (int i = 0; i < numbers.Length; i++)
{
Console.WriteLine(numbers[i] % 2 == 0 ? "чётный" : "нечётный");
}
отличается ли каждый новый сгенерированный номер от предыдущего
for (int i = 1; i < numbers.Length; i++)
{
Console.WriteLine(numbers[i] != numbers[i - 1] ? "отличается" : "не отличается");
}