Estou usando o react js para desenvolver um aplicativo híbrido,
e testando o aplicativo com appium e webdriverio.
Quando introduzo algum valor usando o método setValue,
ele aciona o evento 'onChange'.
No entanto, quando eu limpo a entrada usando clearElement (seletor) ou setValue (seletor, '')
não dispara nenhum evento.
Não tenho certeza se é relacionado ao appium ou problema de implementação do webdriver.
Resolvi o problema temporariamente inserindo o caractere de espaço.
Obrigado.
Estou tendo o mesmo problema com setValue(selector, '')
. Não aciona a aparência de uma dica de ferramenta.
Mudei meu código para funcionar da mesma maneira com uma string vazia e um espaço em branco.
e usou setValue (seletor, '')
apenas uma rotunda ...
Com a ajuda de um usuário stackoverflow, está funcionando conforme o esperado, alterando o código para
setValue(selector, ['','Tab'])
Este bug está relacionado à v4 também?
não está relacionado ao WebdriverIO, é um problema no driver do navegador. Esse problema só está aberto aqui no caso de alguém chegar a uma solução alternativa que garanta 100% que o evento onChange seja acionado (usando javascript na página).
Não acho que haja uma boa solução alternativa para isso. Fechando.
Infelizmente setValue(selector, ['','Tab'])
não aciona onChange
ou onInput
como eu esperava. Alguém conhece uma correção?
Para qualquer pessoa pesquisando no futuro, você deve ser capaz de usar a solução alternativa: setValue(selector, [" ", "\uE003"])
, em que o primeiro valor é um espaço ou qualquer outro caractere e o segundo valor é a representação unicode de um pressionamento de tecla de retrocesso .
Posso confirmar que esta combinação de valores dispara o evento onInput
e o evento onChange
das entradas do formulário.
Por exemplo:
var testBrowser = webdriverio.remote({desiredCapabilities: {browserName: 'firefox'}});
var BACKSPACE_UNICODE = "\uE003";
testBrowser
.init()
.url('http://localhost:3000/some-page-with-a-form')
.setValue('#my-input', [' ', BACKSPACE_UNICODE])
.submitForm("#my-form")
.end()
Comentários muito úteis
Para qualquer pessoa pesquisando no futuro, você deve ser capaz de usar a solução alternativa:
setValue(selector, [" ", "\uE003"])
, em que o primeiro valor é um espaço ou qualquer outro caractere e o segundo valor é a representação unicode de um pressionamento de tecla de retrocesso .Posso confirmar que esta combinação de valores dispara o evento
onInput
e o eventoonChange
das entradas do formulário.Por exemplo: