Очистить текст из текстовой области с селеном

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

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

что-то вроде:

driver.get_element_by_id('foo').clear_field()
101 голос | спросил Isaac 12 +04002011-10-12T00:32:23+04:00312011bEurope/MoscowWed, 12 Oct 2011 00:32:23 +0400 2011, 00:32:23

6 ответов


0
driver.find_element_by_id('foo').clear()
ответил Isaac 18 +04002011-10-18T19:38:34+04:00312011bEurope/MoscowTue, 18 Oct 2011 19:38:34 +0400 2011, 19:38:34
0

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

 webElement.clear();

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

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

 webElement.sendKeys(Keys.BACK_SPACE); //do repeatedly, e.g. in while loop

или

 webElement.sendKeys(Keys.CONTROL + "a");
 webElement.sendKeys(Keys.DELETE);
ответил Fenix 6 Jpm1000000pmTue, 06 Jan 2015 15:55:23 +030015 2015, 15:55:23
0

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

driver.find_element_by_id('foo').clear()
ответил in code veritas 29 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 29 Sep 2014 04:52:34 +0400 2014, 04:52:34
0

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

driver.find_element_by_id('Locator value').clear();
driver.find_element_by_name('Locator value').clear();
ответил iamsankalp89 27 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 27 Sep 2017 12:33:12 +0300 2017, 12:33:12
0

для Java

driver.findelement(By.id('foo').clear();

или

webElement.clear();

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

ответил vaibhavcool20 23 Jpm1000000pmTue, 23 Jan 2018 13:13:14 +030018 2018, 13:13:14
0

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

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

  

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

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

public void waitAndClearFollowedByKeys(By by, CharSequence keys) {
    LOG.debug("clearing element");
    wait(by, true).clear();
    sendKeys(by, Keys.BACK_SPACE.toString() + keys);
}

public void sendKeys(By by, CharSequence keysToSend) {
    WebElement webElement = wait(by, true);
    LOG.info("sending keys '{}' to {}", escapeProperly(keysToSend), by);
    webElement.sendKeys(keysToSend);
    LOG.info("keys sent");
}

private String escapeProperly(CharSequence keysToSend) {
    String result = "" + keysToSend;
    result = result.replace(Keys.TAB, "\\t");
    result = result.replace(Keys.ENTER, "\\n");
    result = result.replace(Keys.RETURN, "\\r");

    return result;
}

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

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

ответил ShadowGames 10 J000000Tuesday18 2018, 12:13:57

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132