Selenium WebDriver submit() vs click()

disons que j'ai un input dans une forme (ressemble à un bouton et interagit comme un bouton) qui génère des données (bien, le serveur génère les données basées sur les paramètres de forme, mais pour l'utilisateur, le bouton le fait :) )basées sur les paramètres dans la forme.

quand j'utilise click(), l'ensemble du processus est suspendu (il gèle en fait, pas d'exceptions ou d'erreurs).

Depuis le Sélénium site web:

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

donc WebDriver a un submit() méthode. Est-il toute différence, de la logique sage, entre l'utilisation d'un click() sur un bouton ou submit() ?

44
demandé sur ROMANIA_engineer 2013-07-08 19:10:11

7 réponses

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

vous pouvez également rechercher le bouton Soumettre et utiliser click().

Donc la seule différence est click() doit être fait sur le bouton soumettre et submit() peut être fait sur n'importe quel élément de formulaire.

C'est à vous.

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

48
répondu Dan2.0 2015-09-28 16:38:09

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 jQuery-plugin pour soumettre le formulaire par exemple via ajax, submit () l'ignorera. Avec click () les fonctions javascript seront exécutées.

25
répondu IonTichy 2014-01-20 15:49:45

je suis un grand fan de submit() mais pas plus.

dans la page Web que je teste, j'entre le nom d'utilisateur et le mot de passe et je clique sur Login. Lorsque j'ai invoqué usernametextbox.submit(), la zone mot de passe est désactivée (qui est vide) et la connexion échoue constamment.

Après la rupture de ma tête depuis un certain temps, quand j'ai remplacé usernametextbox.submit() et remplacé par loginbutton.click(), ça a fonctionné comme par magie.

8
répondu user3000430 2014-04-22 23:30:38

corrigez-moi aussi si je me trompe, mais je crois que submit va attendre qu'une nouvelle page se charge, alors que click va immédiatement continuer à exécuter le code

6
répondu user2426679 2014-01-20 19:27:30

ni l'un ni l'autre submit() ni click() est assez bon. Cependant, il fonctionne très 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, sélénium 2.53.5. Cela fonctionne en parallèle, ce qui signifie qu'il retourne après avoir entré la touche Entrée, n'attend pas que la page se charge.

1
répondu manpur 2016-06-15 11:12:49

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

click() méthode est utilisée, cliquez sur le bouton dans la page web.

Corrigez-moi si je me trompe.

1
répondu Gowtham 2017-03-30 23:36:16

.Click () - effectuer seulement l'opération de clic comme comme le clic de souris.

.Submit() - Effectuer l'Entrée de l'opération comme clavier saisie de l'événement.

Par Exemple. Considérez une page de connexion où elle contient le nom d'utilisateur et le mot de passe et le bouton Soumettre.

en remplissant le mot de passe si nous voulons nous connecter sans cliquer sur le bouton de connexion. nous avons besoin de l'utilisateur .bouton envoyer mot de passe où .cliquez sur la (les) opération ne fonctionne pas.[à entrer dans le application]

Brif.

driver.get("https:// anyURL"); 
driver.manage().window().maximize(); 
driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS); 
driver.findElement(By.id("txtUserId")).sendKeys("abc@test.com"); 
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 
0
répondu Santosh Kanekar 2018-07-02 10:11:31