Webdriverio: clearElement ou setValue string vazia não aciona o evento onChange

Criado em 14 mai. 2015  ·  8Comentários  ·  Fonte: webdriverio/webdriverio

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.

Bug🐛 Selenium Related

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 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()

Todos 8 comentários

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'])

http://stackoverflow.com/questions/32057081/how-to-test-setting-a-field-to-empty-string-using-webdriverio-mocha-and-phantom

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()
Esta página foi útil?
0 / 5 - 0 avaliações