web-dev-qa-db-fra.com

Selenium Webdriver submit () vs click ()

Supposons que j'ai une input dans un formulaire (qui ressemble à un bouton et interagit comme un bouton) qui génère des données (le serveur génère les données en fonction des paramètres du formulaire, mais pour l'utilisateur, le bouton le fait :)) sur la base des paramètres du formulaire.

Lorsque j'utilise click(), l'ensemble du processus est bloqué (il se bloque, pas d'exception ni d'erreur).

Sur le site Web de Selenium:

// Now submit the form. WebDriver will find the form for us from the element
element.submit();

Donc, WebDriver a une méthode submit(). Existe-t-il une différence, sur le plan de la logique, entre l’utilisation d’une click() sur un bouton et celle de submit()

50
CosminO

La fonction submit() est là pour vous simplifier la vie. Vous pouvez l'utiliser sur n'importe quel élément à l'intérieur des balises de formulaire pour soumettre ce formulaire. 

Vous pouvez également rechercher le bouton d'envoi et utiliser click()

Ainsi, la seule différence est que click() doit être effectué sur le bouton d'envoi et que submit() peut être créé pour n'importe quel élément de formulaire.

C'est à vous.

http://docs.seleniumhq.org/docs/03_webdriver.jsp#user-input-filling-in-forms

58
Dan2.0

Il y a une différence entre click () et submit (). 

submit () soumet le formulaire et exécute l'URL donnée par l'attribut "action". Si vous avez une fonction javascript ou un plugin jquery en cours d'exécution pour soumettre le formulaire, par exemple. via ajax, submit () l'ignorera. Avec click (), les fonctions javascript seront exécutées.

28
IonTichy

J'étais un grand fan de submit() mais plus maintenant. 

Dans la page Web que je teste, j'entre un nom d'utilisateur et un mot de passe, puis cliquez sur Connexion. Lorsque j'ai appelé usernametextbox.submit(), la zone de texte du mot de passe est effacée (devient vide) et la connexion échoue. 

Après avoir cassé la tête pendant un moment, quand j'ai remplacé usernametextbox.submit() par loginbutton.click(), cela a fonctionné comme par magie.

10
user3000430

Corrigez-moi également si je me trompe, mais je pense que submit attendra le chargement d'une nouvelle page, alors que click continuera immédiatement à exécuter le code.

6
user2426679

.Click () - Effectue uniquement un clic comme un clic de souris.

.Submit () - Effectue une opération Enter comme un événement Enter clavier.

Par exemple. Considérez une page de connexion contenant le nom d'utilisateur, le mot de passe et le bouton d'envoi.

En remplissant le mot de passe si nous voulons nous connecter sans cliquer sur le bouton de connexion. nous avons besoin de l'utilisateur .soumettre bouton sur mot de passe où .click () opération ne fonctionne pas. [pour vous connecter à l'application]

Brif.

driver.get("https:// anyURL"); 
driver.manage().window().maximize(); 
driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS); 
driver.findElement(By.id("txtUserId")).sendKeys("[email protected]"); 
WebElement text = driver.findElement(By.id("txtPassword")); text.sendKeys("password"); 
Thread.sleep(1000); 
text.click();   //This will not work - it will on perform click operation not submit operation
text.submit(); //This will perform submit operation has enter key 
1
Santosh Kanekar

Ni submit() ni click() ne suffisent. Cependant, cela fonctionne bien si vous le suivez avec une touche ENTER:

search_form = driver.find_element_by_id(elem_id)
search_form.send_keys(search_string)
search_form.click()
from Selenium.webdriver.common.keys import Keys
search_form.send_keys(Keys.ENTER)

Testé sur Mac 10.11, Python 2.7.9, Selenium 2.53.5. Cela fonctionne en parallèle, ce qui signifie que retourne après la saisie de la touche Entrée, n'attend pas que la page se charge.

1
manpur

La méthode submit() peut être utilisée pour cliquer sur le bouton présent dans le formulaire et l'attribut Type doit être "submit".

La méthode click() permet de cliquer sur le bouton dans la page Web. 

Corrigez-moi si je me trompe.

1
Gowtham