Как правильно заполнять input, если в нем есть значение


(Andy Soloman) #1

Есть поле input для логина, в котором при открытии страницы уже стоит “имя”, но если клацнуть в нем мышкой, то поле очищается само.
В своем коде я сразу нахожу это поле и заполняю, но проблема в том, что я заметил что иногда поле само не очищается, а заполняется так:

имяmylogin

где mylogin - это мой логин, но в большинстве случаев поле очищается как надо.
Почему иногда оно не очищается, и как его тогда правильно заполнять?


(Oleksandr Khotemskyi) #2

У ваших фронтенд девелоперов спрашивать пробовали?


(Andy Soloman) #3

зачем? это же чисто вопрос по автоматизации?


(Maxim Zaitsev) #4

Вообще хорошим тоном считается очищать поле перед вводом средствами selenium, а не просто кликом на поле…

webelement.clear()
webelement.send_keys(new_text_value)

#6

метод clear иногда выкидывает очень странные ексепшены, раза 3 на такую фигню попадался, лучше уж чистить атрибут value у текстового поля.


(Andy Soloman) #7

в данном случае значение поля input


(Maxim Zaitsev) #8

Все может быть. У меня пока не было таких проблем с полями ввода. Если и будут, то буду решать конкретную проблему в конкретном месте, а не переносить костыли на все проекты.


(Dmytro Kryshtopenko) #9

я ветеран по этой теме. Сначала нужно подчистить текущее значение, после чего банальный sendkeys(value)

  1. Если нужна анимация подтирания, то с полингом в 50 мс чисти имитируя BackSpace (так и отправляешь для вебэлемента значение Keys.BACK_SPACE)
  2. Если хочешь все и сразу, форси clear() селениумский для вебэлемента, подчищает сразу.
  3. Если и Селениум не справляется, есть универсальное решение - чистка через JavaScript.
    Scala/Java - webDriver.asInstanceOf[JavascriptExecutor].executeScript("""arguments[0].value=""""", element)