Не работает clear selenium

Очистить текст из текстового поля с помощью селена

У меня есть несколько тестов, в которых я проверяю, появляется ли правильное сообщение об ошибке, когда текст в определенных полях недействителен. Одной из проверок действительности является то, что определенный элемент textarea не пуст.

Если в этом текстовом поле уже есть текст, как я могу сказать селену, чтобы он очистил поле?

Ты можешь использовать

Если этот элемент является элементом ввода текста, это очистит значение.

Обратите внимание, что события, запускаемые этим событием, могут быть не такими, как вы ожидали. В частности, мы не запускаем никаких событий клавиатуры или мыши. Если вы хотите, чтобы события клавиатуры запускались, подумайте об использовании чего-то вроде sendKeys(CharSequence) . Например:

Я наткнулся на поле, где .clear () не работал. Использование комбинации первых двух ответов сработало для этого поля.

В самой последней версии Selenium используйте:

Если этот элемент является элементом ввода текста, это очистит значение.

Это общий синтаксис

По моему опыту, это оказалось наиболее эффективным

Мы отправляем Ctrl + Backspace, чтобы удалить все символы из ввода, вы также можете заменить backspace на delete.

РЕДАКТИРОВАТЬ: удалена зависимость ключей

С помощью простого вызова clear () в DOM появляется, что соответствующий компонент input / textarea все еще имеет свое старое значение, поэтому любые последующие изменения в этом компоненте (например, заполнение компонента новым значением) не будут обработаны вовремя.

Если вы посмотрите исходный код селена, вы обнаружите, что метод clear () задокументирован со следующим комментарием:

/ ** Если этот элемент является элементом ввода текста, это очистит значение. Не влияет на другие элементы. Элементы ввода текста — это элементы INPUT и TEXTAREA. Обратите внимание, что события, запускаемые этим событием, могут быть не такими, как вы ожидали. В частности, мы не запускаем никаких событий клавиатуры или мыши. Если вы хотите, чтобы события клавиатуры запускались, попробуйте использовать что-то вроде <@link #sendKeys (CharSequence . )>с клавишей возврата. Чтобы убедиться, что вы получаете событие изменения, рассмотрите возможность последующего вызова <@link #sendKeys (CharSequence . )>с помощью клавиши табуляции. * /

Таким образом, используя этот полезный совет, чтобы очистить поле ввода / текста (компонент, который уже имеет значение) И присвоить ему новое значение, вы получите следующий код:

Извините, что этот код является Java, а не Python. Кроме того, мне пришлось пропустить дополнительный метод waitUntilPageIsReady (), который делал бы этот пост слишком длинным.

Надеюсь, это поможет вам в вашем путешествии с Selenium!

Источник

selenium clear() command doesn’t clear the element

I have been writing selenium scripts for a while in Java. I encountered a very weird issue today. Here is the issue:

I cleared a text field using webelement.clear() method, later while executing next command (click event), the text area I had previously cleared, is now populated with previously filled value.

Here is the code snippet:

7 Answers 7

I don’t know the exact reason for your element keeping its value, but you can try an alternative text clearance by sending ‘Ctrl+A+Delete’ key combination using sendKeys method of the element’s object:

It’s possible that the fields you’re trying to fill has autocomplete attribute set to on. [Reference]

If clear() works when the line executes then it’s safe to say that this is not a webdriver specific issue.

It would help if you can show the html snippet of the page section you’re working on.

Possible areas of debugging:

  • forcefully remove autocomplete attribute on page load using java script executor
  • turn off autocomplete setting on the driver level. I believe the solution would vary depending on the driver being used.

    Источник

    Clear text from textarea with selenium

    I’ve got some tests where I’m checking that the proper error message appears when text in certain fields are invalid. One check for validity is that a certain textarea element is not empty.

    If this textarea already has text in it, how can I tell selenium to clear the field?

    11 Answers 11

    Option a)

    If you want to ensure keyboard events are fired, consider using sendKeys(CharSequence) .

    WebElement

    There are many ways to get the required WebElement, e.g.:

    • driver.find_element_by_id
    • driver.find_element_by_xpath
    • driver.find_element

    Option b)

    If this element is a text entry element, this will clear the value.

    Note that the events fired by this event may not be as you’d expect. In particular, we don’t fire any keyboard or mouse events.

    I ran into a field where .clear() did not work. Using a combination of the first two answers worked for this field.

    In the most recent Selenium version, use:

    In my experience, this turned out to be the most efficient

    We are sending Ctrl + Backspace to delete all characters from the input, you can also replace backspace with delete.

    EDIT: removed Keys dependency

    If this element is a text entry element, this will clear the value.

    It is general syntax

    Am using selenium==3.141.0 and I don’t know why

    Which perfectly worked for me.

    With a simple call of clear() it appears in the DOM that the corresponding input/textarea component still has its old value, so any following changes on that component (e.g. filling the component with a new value) will not be processed in time.

    If you take a look in the selenium source code you’ll find that the clear()-method is documented with the following comment:

    /** If this element is a text entry element, this will clear the value. Has no effect on other elements. Text entry elements are INPUT and TEXTAREA elements. Note that the events fired by this event may not be as you’d expect. In particular, we don’t fire any keyboard or mouse events. If you want to ensure keyboard events are fired, consider using something like <@link #sendKeys(CharSequence. )>with the backspace key. To ensure you get a change event, consider following with a call to <@link #sendKeys(CharSequence. )>with the tab key. */

    So using this helpful hint to clear an input/textarea (component that already has a value) AND assign a new value to it, you’ll get some code like the following:

    Sorry for this code being Java and not Python. Also, I had to skip out an additional «waitUntilPageIsReady()-method that would make this post way too long.

    Hope this helps you on your journey with Selenium!

    Источник

    Как очистить поле веб-элемента — Groovy

    Согласно главе 4.10 этой документации:

    Для очистки поля webElement я могу сделать:

    Но это не выглядит чистым для меня. Есть ли способ написать метод с именем «clear», который может быть вызван для webElement, и вызов этого метода будет выглядеть следующим образом?

    Как этот метод будет выглядеть тогда?

    Мне удалось просто сделать что-то вроде этого:

    Есть ли у меня другие возможности или подходы к этой проблеме, чтобы можно было вызвать метод для элемента, чтобы очистить ее?

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

    3 ответа

    Самый простой способ очистить элемент в Geb — просто установить его значение в пустую строку:

    Это вызовет метод clear() WebElement, так что если это не вариант, и вы действительно хотите выполнить комбинацию клавиш, как в вашем вопросе, тогда у вас есть два варианта. Мой предпочтительный вариант — написать модуль с методом clear() :

    И использовать это как:

    Другим вариантом будет реализация пользовательского навигатора и добавление clear() Метод есть.

    Обязательно передайте используемый драйвер, чтобы вам не приходилось нажимать клавиши. Вы можете использовать .Clear (), чтобы очистить любой текст в текстовом поле.

    Один из вариантов, который вы можете попробовать, — это расширить или перезаписать класс WebElement, а затем добавить свой собственный clear() метод, который можно вызывать в элементе webDriver.

    Источник

    Selenium sendKeys и clear не работают в поле автозаполнения Kendo в Safari 11

    При кодировании теста автоматизации в Selenium-Ruby, когда sendKeys / clear используется в текстовом поле автозаполнения (пользовательский интерфейс Kendo) в браузере Safari 11.0.1,

    Отображается следующая ошибка:

    Это происходит даже после успешной проверки, включен ли этот элемент и виден ли этот элемент с помощью selenium enabled? и отображается? методы.

    НО, эта проблема не наблюдается в других браузерах, таких как Chrome, IE и Edge.

    Я использовал javascript («document.getElementById (‘fcCreateMainAssingee’.value =’ text ‘)»), чтобы изменить значение этого текстового поля, и он работал нормально, но раскрывающееся меню динамических параметров не отображается, что является проблемой.

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

    Кроме того, любезно предложите, если есть какой-либо другой способ сделать это.

    Вот DOM этого поля автозаполнения:

    1 ответ

    Во время исследования полей автозаполнения Kendo я наткнулся на код JavaScript, который помог бы решить эту проблему.

    Следующее является надежной альтернативой функциям селена, оно было тщательно протестировано в браузерах Safari, Chrome, IE и Edge и отлично работает.

    Надеюсь, это поможет кому-то, кто находится в той же лодке, что и я последние несколько дней!

    Вот селеновый эквивалент JS для send_keys —

    (нет необходимости очищать текст, поскольку типы js в search_string удаляют существующую строку-заполнитель)

    А затем, чтобы запустить поиск, который происходит после ввода, выполните следующие js:

    Приведенный выше js вызовет поиск, а затем откроется динамический раскрывающийся список. Теперь просто нужно найти этот элемент по xpath с помощью метода selenium find_element, а затем щелкнуть по нему с помощью js (см. Ниже)

    Вот полный метод:

    Но, тем не менее, если у кого-то есть лучший способ делать что-то, любезно прокомментируйте здесь. Спасибо!

    Источник

    Читайте также:  Forza horizon 4 как правильно настроить машину
  • Оцените статью