J'utilise react js pour développer une application hybride,
et tester l'application avec appium et webdriverio.
Lorsque j'entre une valeur en utilisant la méthode setValue,
il déclenche l'événement 'onChange'.
Cependant, lorsque j'efface l'entrée à l'aide de clearElement (sélecteur) ou setValue (sélecteur, '')
il ne déclenche aucun événement.
Je ne sais pas s'il s'agit d'un problème lié à l'appium ou à la mise en œuvre du pilote Web.
J'ai résolu le problème temporairement en insérant un caractère d'espace.
Merci.
J'ai le même problème avec setValue(selector, '')
. Il ne déclenche pas l'apparition d'une info-bulle.
J'ai changé mon code pour qu'il fonctionne de la même manière avec une chaîne vide et un espace blanc.
et utilisé setValue (selector, '')
juste un rond-point ...
Avec l'aide d'un utilisateur de stackoverflow, il fonctionne comme prévu en modifiant le code en
setValue(selector, ['','Tab'])
Ce bogue est-il également lié à la v4?
ce n'est pas lié à WebdriverIO, c'est un problème dans le pilote du navigateur. Ce problème n'est ouvert ici que si quelqu'un propose une solution de contournement garantissant à 100% que l'événement onChange est déclenché (en utilisant javascript sur la page).
Je ne pense pas qu'il existe une bonne solution de contournement pour cela. Fermeture.
Malheureusement setValue(selector, ['','Tab'])
ne déclenche pas onChange
ou onInput
comme je l'avais espéré. Quelqu'un connaît-il une solution?
Pour tous ceux qui recherchent sur Google à l'avenir, vous devriez pouvoir utiliser la solution de contournement: setValue(selector, [" ", "\uE003"])
, où la première valeur est un espace ou tout autre caractère, et la deuxième valeur est la représentation unicode d'une frappe de retour arrière .
Je peux confirmer que cette combinaison de valeurs déclenche l'événement onInput
et l'événement onChange
des entrées de formulaire.
Par exemple:
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()
Commentaire le plus utile
Pour tous ceux qui recherchent sur Google à l'avenir, vous devriez pouvoir utiliser la solution de contournement:
setValue(selector, [" ", "\uE003"])
, où la première valeur est un espace ou tout autre caractère, et la deuxième valeur est la représentation unicode d'une frappe de retour arrière .Je peux confirmer que cette combinaison de valeurs déclenche l'événement
onInput
et l'événementonChange
des entrées de formulaire.Par exemple: