Le sélénium bindings Python: comment faire pour exécuter un code JavaScript sur un élément?
Ont utilisé python, le sélénium script pour déclencher le sélénium serveur pour exécuter du code JavaScript. Il fonctionne très bien.
drv.execute_script('<some js code>')
Cependant, je ne peux pas comprendre comment exécuter du code javascript sur un élément qui a été extrait à l'aide de get_element_by_*() de l'api. Par exemple, je
ele = get_element_by_xpath('//button[@id="xyzw"]');
#question: how do I change the "style" attribute of the button element?
Si j'étais sur le développeur de la console du navigateur, je peux l'exécuter en tant que
ele = $x('//button[@id="xyzw"]')[0]
ele.setAttribute("style", "color: yellow; border: 2px solid yellow;")
Ne sais pas comment le faire en python sélénium script.
Merci à l'avance.
Jetez un oeil à la JavascriptExecutor interface dans
Merci @Brian pour le lien. C'est pour java de liaison, néanmoins, il me fait comprendre ce que les "arguments" dans la solution de travail "...arguments[0].setAttribute(....)" les moyens. Il est utilisé par javascript pour désigner le paramètre de la fonction (esp lorsque le nombre de paramètres à la fonction est variable).
Pas de problème du tout. J'aime le partage des connaissances.
Selenium
.Merci @Brian pour le lien. C'est pour java de liaison, néanmoins, il me fait comprendre ce que les "arguments" dans la solution de travail "...arguments[0].setAttribute(....)" les moyens. Il est utilisé par javascript pour désigner le paramètre de la fonction (esp lorsque le nombre de paramètres à la fonction est variable).
Pas de problème du tout. J'aime le partage des connaissances.
OriginalL'auteur packetie | 2014-08-18
Vous devez vous connecter pour publier un commentaire.
execute_script
accepte les arguments, de sorte que vous pouvez passer l'élément:S'est avéré que j'ai manqué l'apostrophe, le suivant fonctionne très bien: drv.execute_script (arguments[0].setAttribute("style", "couleur: jaune; border: 2px solid jaune;")', ele) Salut @Richard, pouvez-vous mettre à jour votre réponse, là encore, donc, je peux l'accepter?
J'ai un peu la sensation que j'ai seulement la partie du chemin, vous êtes celui qui a pris mon point de vue syntaxique de mauvaise réponse, et compris la syntaxe correcte. Cela dit, si vous êtes toujours prêts à accepter ma réponse, c'est très bien.
OriginalL'auteur Richard
Merci pour la réponse par @Richard qui m'a conduit dans la bonne direction et de Brian lien (même pensé que c'est pour java) qui m'a aidé à comprendre le sens de "arguments".
Le code suivant va faire ce dont j'ai besoin.
OriginalL'auteur packetie