Eu tenho alguns testes nos quais estou verificando se a mensagem de erro correta aparece quando o texto em determinados campos é inválido. Uma verificação de validade é que um determinado elemento da área de texto não está vazio.
Se essa área de texto já tiver texto, como posso dizer ao selênio para limpar o campo?
algo como:
driver.get_element_by_id('foo').clear_field()
Respostas:
fonte
Você pode usar
Se este elemento for um elemento de entrada de texto, isso limpará o valor.
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 parecido
sendKeys(CharSequence)
. Por exemplo:ou:
fonte
webElement.sendKeys(Keys.BACK_SPACE); //do repeatedly, e.g. in while loop
no meu caso estranhoEncontrei um campo em que .clear () não funcionava. Usando uma combinação das duas primeiras respostas funcionou para este campo.
fonte
;
novamente?;
não é necessário em python. Eu adicionei por acidente. Boa pegada.Na versão mais recente do Selenium, use:
fonte
para java
ou
Se este elemento for um elemento de entrada de texto, isso limpará o valor.
fonte
É uma sintaxe geral
fonte
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:
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:
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!
fonte
Na minha experiência, isso acabou sendo o mais eficiente
Estamos enviando Ctrl + Backspace para excluir todos os caracteres da entrada. Você também pode substituir o backspace por delete.
EDIT: dependência de chaves removida
fonte
driver.find_element_by_xpath("path").send_keys(Keys.CONTROL + u'\ue003')
funcionou muito bem com o FireFoxfonte