it-swarm.com.de

Selenium Webdriver submit () vs click ()

Angenommen, ich habe eine input in einem Formular (sieht aus wie eine Schaltfläche und interagiert wie eine Schaltfläche), die einige Daten generiert (der Server generiert die Daten basierend auf den Formularparametern, aber für den Benutzer ist dies die Schaltfläche :) basierend auf den Parametern im Formular.

Wenn ich click() verwende, hängt der gesamte Prozess (es friert tatsächlich ein, keine Ausnahmen oder Fehler).

Von der Selenium-Website:

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

WebDriver hat also eine submit()-Methode. Gibt es logisch einen Unterschied zwischen der Verwendung einer click() auf einer Schaltfläche oder submit()

50
CosminO

Die Funktion submit() macht das Leben leichter. Sie können es für jedes Element innerhalb von Formular-Tags verwenden, um dieses Formular zu senden. 

Sie können auch nach dem Submit-Button suchen und click() verwenden. 

Der einzige Unterschied besteht darin, dass click() über die Schaltfläche "Senden" und submit() für jedes Formularelement ausgeführt werden kann.

Es liegt an dir.

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

58
Dan2.0

Es gibt einen Unterschied zwischen click () und submit (). 

submit () sendet das Formular und führt die durch das Attribut "action" angegebene URL aus. Wenn Sie eine Javascript-Funktion oder ein JavaScript-Plugin haben, um das Formular zu senden, z. via ajax wird es von submit () ignoriert. Mit click () werden die Javascript-Funktionen ausgeführt.

28
IonTichy

Ich war ein großer Fan von submit(), aber nicht mehr. 

Auf der von mir getesteten Webseite gebe ich Benutzername und Passwort ein und klicke auf Anmelden. Wenn ich usernametextbox.submit() aufgerufen habe, wird das Kennwort-Textfeld gelöscht (wird leer) und die Anmeldung schlägt fehl. 

Nachdem ich mir irgendwann den Kopf gebrochen hatte, als ich usernametextbox.submit() durch loginbutton.click() ersetzt hatte, funktionierte es wie ein Zauber.

10
user3000430

Korrigieren Sie mich auch, wenn ich falsch liege, aber ich glaube, dass Submit auf das Laden einer neuen Seite wartet, wohingegen der Klick sofort die Ausführung des Codes fortsetzt

6
user2426679

.Click () - Führt nur einen Klick-Vorgang wie einen Mausklick aus.

.Submit () - Enter-Vorgang wie Tastatureingabe durchführen.

Zum Beispiel. Betrachten Sie eine Anmeldeseite, auf der Benutzername und Kennwort enthalten sind, sowie die Schaltfläche zum Senden.

Beim Ausfüllen des Passworts, wenn wir uns anmelden möchten, ohne auf den Login-Button zu klicken. Wir müssen die .submit-Schaltfläche für das Kennwort verwenden, bei dem die .click () - Operation nicht funktioniert. [um sich in der Anwendung anzumelden]

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

Weder submit() noch click() ist gut genug. Es funktioniert jedoch gut, wenn Sie es mit einer EINGABETASTE befolgen:

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)

Getestet auf Mac 10.11, Python 2.7.9, Selen 2.53.5. Dieser Vorgang läuft parallel ab, dh nach Eingabe der EINGABETASTE wird zurückgegeben, es wird nicht auf das Laden der Seite gewartet.

1
manpur

Die submit()-Methode kann verwendet werden, um auf die Schaltfläche im Formular zu klicken, und das Typattribut sollte "submit" sein.

Die click()-Methode wird verwendet, um auf die Schaltfläche auf der Webseite zu klicken. 

Korrigiere mich, wenn ich falsch liege.

1
Gowtham