web-dev-qa-db-fra.com

Que fait WebElement.clear () aux TextBoxes?

J'ai récemment rencontré un problème avec Selenium où l'appel de clear() sur une zone de texte personnalisée provoque des problèmes lors de la saisie de texte plus tard dans le test. La zone de texte vérifie les événements (JavaScript) browserEvents, en particulier keyDown. J'ai essayé de comprendre ce que clear() fait pour voir si cela pourrait affecter les choses, mais je n'arrive pas à trouver de détails.

La source du sélénium Java bindings montre que clear() n'utilise pas de simulation de clavier ou de souris pour effacer le texte de la zone de texte. Donc que fait-il exactement?

14
joshin4colours

La méthode clear() exécute un "Automation Atom" , qui est une fonction JavaScript destinée à fournir la plus petite unité de base de fonctionnalité d'automatisation pour un navigateur. Dans le cas de clear(), cette fonction définit la propriété value de l'élément sur une chaîne vide (''), puis déclenche l'événement onchange sur l'élément. La fonction des atomes qui vous intéresse est bot.action.clear()

31
JimEvans

Voici ce que fera exactement clear(). La fonction effacera la valeur de la zone de texte et activera la zone de texte. Avant d'entrer du texte dans le champ de texte, nous devons effacer le champ de texte et l'activer. Si nous n'utilisons pas clear (), nous ne pouvons pas entrer de valeur dans le champ de texte en utilisant Selenium.

driver.find_element_by_xpath(xpath).clear()
driver.find_element_by_xpath(xpath).send_keys("data")
1
Kv.senthilkumar