Element impossible à assigner

Bonjour,

A l'aide Edge/ selenium, je me connecte sur un site où je dois coder en vba l'assignation, par un entier, d'un champ

qui peut se remplir soit par incrément/décrément( appui sur + / -), soit en forçant une valeur.

capture

- pour incrémenter(ou décrémenter), j’exécute:

obj.FindElementsByClass("montant-plus").First.Click

j'ai bien l'incrémentation qui s'affiche dans le champ

- si j'assigne une valeur quelconque directement dans le champ, avec

n=10
obj.FindElementsByClass("montant").First.Value = n,

10 ne s'affiche pas
J' ai vérifié que le champ est bien identifié, et d'ailleurs , quand je force manuellement une valeur dans ce champ,

et que j' éxecute

n= obj.FindElementsByClass("montant").First.Value,

je retrouve bien dans n la valeur forcée.

Je ne vois pas l'erreur....

Bonjour,

essaie ceci

obj.findElement(By.className("montant")).value = n

ça ne marche pas , ni dans un sens ni dans l'autre.

la forme FindElementsByClass est celle utilisée sur le site.

Je vais tester sur un site quelconque avec Edge... sans grande garantie !

Entre temps, si de ton côté tu as la réponse partage la.

ok. Pour éventuellement éclairer, je joins le code du champ à modifier.

Il est défini sans ambiguïté, par son tag(input)ou par sa class(montant) ou son name(montant).

les 3 st utilisables,... mais dans un sens seulement

capture2

Bonjour,

je ne pense pas que l'on puisse assigner directement une valeur

il faut probablement simuler la frappe au clavier par sendkeys, et probablement mettre le nombre en texte même si le input est en type="number"

obj.FindElementsByClass("montant").SendKeys ("10")

confirmé par un essai selenium/chrome !

il faut probablement simuler la frappe au clavier par sendkeys, et probablement mettre le nombre en texte même si le input est en type="number"

obj.FindElementByClass("montant").SendKeys ("10")

edit : corrigé (enlèvement du s)

J'ai déjà essayé SendKeys, sans succès, ... sauf si FindElement est utilisé au singulier.

Dans ce cas obj.FindElementByTag("input") , ou obj.FindElementByName("name") ou obj.FindElementByclass("montant") font l'affaire.

Reste une bizarrerie :

obj.FindElementByTag("input").SendKeys(Valeur)

appende Valeur à la valeur existante dans le champ, devant ou derrière , suivant que Valeur est un nombre ou un string (???)

une raz préalable du champ résout le problème:

obj.FindElementByTag("input").Clear

Ouf! , ...et merçi !

J'ai déjà essayé SendKeys, sans succès, ... sauf si FindElement est utilisé au singulier.

exact, c'est en effet ce que j'avais utilisé en test

    Dim robot As WebDriver
    Set robot = New WebDriver
    robot.Start "chrome"
    robot.Get "https://www.google.com/advanced_search"
    robot.FindElementByName("as_q").SendKeys "forum excel pratique"
    robot.FindElementByClass("jfk-button").Click

pour moi SendKeys(Valeur) doit être séparé par un espace, quoi qu'il en soit en effet un clear est une bonne protection

.

Pour ma part j'ai davantage utilisé AutoIt pour piloter une application; et récemment (mais ce n'est pas la panacée), les gestion de la souris avec excel qui ne requiert aucun autre logiciel.

Rechercher des sujets similaires à "element impossible assigner"