Перейти к содержимому

Фотография

Selenium C# автотест логин


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 6

#1 Alex_1309

Alex_1309

    Новый участник

  • Members
  • Pip
  • 7 сообщений

Отправлено 23 ноября 2022 - 19:31

Приветствую.

Необходимо написать скрипт для входа в систему. Данные необходимые для входа в систему - логин, пароль, а так же персональный идентификационный номер состоящий из 11 цифр(номер 3 на изображении). Проблема состоит в том что при каждом новом входе система требует 2 рандомные цифры персонального идентификационного номера. Отличия,когда поле активно(номер 1 на изображении) и неактивно(номер 2 на изображении). 

 

 

То есть когда поле неактивно, в элементе присутствует данный атрибут - disabled="disabled".

Ну и собственно текстовой вариант активного элемента:

 

<input class="form-control MNTextBoxContent" id="PESEL_5_txtContent" maxlength="1" name="PESEL_5" style="text-align: center;" type="password">

 

и неактивного:

<input class="form-control MNTextBoxContent" disabled="disabled" id="PESEL_6_txtContent" maxlength="1" name="PESEL_6" style="text-align: center;" type="password">

 

Из того что знаю - необходимо как-то сравнить атрибуты всех элементов, и туда, где отсутвует disabled отправить соответствующие цифры.

Пробовал сделать данное заданиние с помощью цикла if else, но чёт не получается.

Скажу иначе, знаю что данное задание выполняется так же при помощи if else а так же какого-то другого цикла. Но больше в голову ничего не приходит, видимо знаний маловато :-)

В общем буду благодарен за помощь!

Прикрепленные файлы


  • 0

#2 Snap

Snap

    Специалист

  • Members
  • PipPipPipPipPip
  • 980 сообщений
  • ФИО:Роман
  • Город:Москва


Отправлено 24 ноября 2022 - 08:38

Если я правильно понял вопрос, то вам нужно найти элементы без атрибута disabled="disabled". Это можно решить с помощью css

input:not([disabled="disabled"])

или xpath

//input[not(@disabled="disabled")]

  • 0

#3 Alex_1309

Alex_1309

    Новый участник

  • Members
  • Pip
  • 7 сообщений

Отправлено 24 ноября 2022 - 08:53

 

Если я правильно понял вопрос, то вам нужно найти элементы без атрибута disabled="disabled". Это можно решить с помощью css

input:not([disabled="disabled"])

или xpath

//input[not(@disabled="disabled")]

@Snap, да, Вы верно поняли, мне нужно найти элементы без атрибута disabled="disabled".

То что Вы посоветовали - работает, спасибо.

Но остаётся вопрос - как мне это уложить в код, какой цикл использовать, чтобы цикл перебрал все 11 элементов, нашёл активные, и отправил соответствующую цифру.

Я  пробовал как-то так:

IWebElement peselEighthNumber = driver.FindElement(By.XPath("//*[@id='PESEL_7']"));

            if (peselEighthNumber.Enabled)
            {
                peselEighthNumber.SendKeys("3");
            }

Но не работает.

Понимаю что тут неверно указано условие цикла, потому и прошу помочь запихнуть этот disable в цикл.


  • 0

#4 Snap

Snap

    Специалист

  • Members
  • PipPipPipPipPip
  • 980 сообщений
  • ФИО:Роман
  • Город:Москва


Отправлено 24 ноября 2022 - 09:09

А почему конкретно не работает? Ошибка какая или просто не вводится?

Грамотнее было бы получить список всех элементов типа input[type="password"] и перебрать их в цикле for.


  • 0

#5 Alex_1309

Alex_1309

    Новый участник

  • Members
  • Pip
  • 7 сообщений

Отправлено 24 ноября 2022 - 10:51

А почему конкретно не работает? Ошибка какая или просто не вводится?

Грамотнее было бы получить список всех элементов типа input[type="password"] и перебрать их в цикле for.

Просто не вводится.

Спасибо за подсказку.

Попробую сделать то что Вы описали с циклом for  :yes:


  • 0

#6 Snap

Snap

    Специалист

  • Members
  • PipPipPipPipPip
  • 980 сообщений
  • ФИО:Роман
  • Город:Москва


Отправлено 24 ноября 2022 - 13:33

Может проблема не в условии/цикле? Так как на первый взгляд проверка выглядит верной. Может input какой сложный и сначала кликать надо?


  • 0

#7 Alex_1309

Alex_1309

    Новый участник

  • Members
  • Pip
  • 7 сообщений

Отправлено 24 ноября 2022 - 13:49

Может проблема не в условии/цикле? Так как на первый взгляд проверка выглядит верной. Может input какой сложный и сначала кликать надо?

А это кстати идея)

Кликать по этому элементу я не пробовал, спасибо, попробую


  • 0


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных