Com uma simples chamada de clear (), aparece no DOM que o componente de entrada / área de texto correspondente ainda possui seu valor antigo, portanto, quaisquer alterações a seguir nesse componente (por exemplo, preenchendo o componente com um novo valor) não serão processadas a tempo.
Se você der uma olhada no código fonte do selênio, verá que o método clear () - está documentado com o seguinte comentário:
/ ** Se este elemento for um elemento de entrada de texto, isso limpará o valor. Não tem efeito sobre outros elementos. Os elementos de entrada de texto são elementos INPUT e TEXTAREA. Observe que os eventos disparados por esse evento podem não ser os esperados. Em particular, não acionamos eventos de teclado ou mouse. Se você deseja garantir que os eventos do teclado sejam acionados, considere usar algo como {@link #sendKeys (CharSequence ...)} com a tecla backspace. Para garantir que você obtenha um evento de alteração, considere seguir com uma chamada para {@link #sendKeys (CharSequence ...)} com a tecla tab. * /
Portanto, usando esta dica útil para limpar uma entrada / área de texto (componente que já possui um valor) E atribuir um novo valor a ele, você receberá um código como o seguinte:
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;
}
Desculpe por este código ser Java e não Python. Além disso, tive que pular um método "waitUntilPageIsReady () - adicional que tornaria essa postagem muito longa.
Espero que isso ajude você em sua jornada com o Selenium!