С помощью простого вызова 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!