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

Фотография

Как реализован метод clear()?

selenium java clear()

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

#1 maxslon

maxslon

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

  • Members
  • Pip
  • 28 сообщений
  • ФИО:Максим


Отправлено 05 сентября 2014 - 08:34

Добрый день.

Столкнулся с проблемкой - не могу очистить textarea.

Если проверять вручную - все ок. И через backspace, и через del, и через Ctrl+x, и через вырезание через контекстное меню - все работает корректно. Есть счетчик количества символов, он меняется на максимальное значение и кнопка "Сохранить" становится доступна.

Когда же это делает селениум методом clear(), то счетчик количества символов не меняется и кнопка "Сохранить" недоступна. Хотя текст пропадает.

 

Отсюда вопрос: как реализован метод clear()?

PS: тесты на java.


  • 0

#2 vmaximv

vmaximv

    Опытный участник

  • Members
  • PipPipPipPip
  • 350 сообщений

Отправлено 05 сентября 2014 - 09:00

https://github.com/S...atoms/action.js
/**
76	 * Clears the given {@code element} if it is a editable text field.
77	 *
78	 * @param {!Element} element The element to clear.
79	 * @throws {bot.Error} If the element is not an editable text field.
80	 */
81	bot.action.clear = function(element) {
82	  bot.action.checkInteractable_(element);
83	  if (!bot.dom.isEditable(element)) {
84	    throw new bot.Error(bot.ErrorCode.INVALID_ELEMENT_STATE,
85	        'Element must be user-editable in order to clear it.');
86	  }
87	
88	  bot.action.LegacyDevice_.focusOnElement(element);
89	  if (element.value) {
90	    element.value = '';
91	    bot.events.fire(element, bot.events.EventType.CHANGE);
92	  }
93	
94	  if (bot.dom.isContentEditable(element)) {
95	    // A single space is required, if you put empty string here you'll not be
96	    // able to interact with this element anymore in Firefox.
97	    element.innerHTML = ' ';
98	    // contentEditable does not generate onchange event.
99	  }
100	};

  • 0

#3 user12

user12

    Специалист

  • Members
  • PipPipPipPipPip
  • 894 сообщений
  • ФИО:Виктор
  • Город:Минск


Отправлено 05 сентября 2014 - 09:18

С clear раньше бывали проблемы, сейчас с такими не давно не сталкивался.

Было 2 таких банальных решений "в лоб":

1. Нажать "Ctrl + A", потом DELETE

2. Либо посчитать сколько символов в поле и нажать Backspace

 

Но лучше всего сообщить Алексею Баранцеву, что вот есть страница по урлу XXXX и там если сделать webelement.clear - то появляются проблемы


  • 0

#4 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 872 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 05 сентября 2014 - 12:26

В результате обсуждения в скайпе выяснилось, что интересует реализация операции clear в chromedriver. Но с большой вероятностью там действительно используется тот самый атом, который показан двумя комментами выше.

 

Эта операция "читерская", она выполняет присваивание value = '', после чего генерирует единственное событие change. А обновление счётчика символов скорее всего повешено на обработчик keypress или keup. Поэтому и не срабатывает.

 

Однако можно со своей стороны тоже немного "почитерить" -- сначала выполнить clear, а потом послать в это поле нажатие кнопки Backspace, сработает обработчик и счётчик символов обновится.


  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium



Темы с аналогичным тегами selenium, java, clear()

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

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