2017-02-03 2 views
1

mir jemand den genauen Unterschied erklären zwischen() einreichen und klicken Sie auf()
Senden() leitet auf eine andere Seite, während Sie auf() nicht mir erlaubt, die innere Seite zuzugreifen

Wie mein Szenario i zu wollen, ist Zugriff auf diese site. wenn ich auf Login-Taste mit click() Methode klicken. Site erlaubt mir nicht, auf die innere Seite zuzugreifen, während die Methode submit() verwendet wird, Site wird auf die andere Seite umgeleitet.

Also, ich bekomme nicht den richtigen Unterschied zwischen diesen beiden Methoden. Weitere Informationen finden Sie im folgenden Code-Snippet.

driver.get("https://www.ymlp.com/login.html"); 
driver.manage().window().maximize();  
driver.findElement(By.id("T1")).sendKeys("[email protected]"); 
driver.findElement(By.id("T2")).sendKeys("[email protected]"); 
driver.findElement(By.id("loginbtn")).submit(); 

Wenn Sie über Code-Website ausführen Umleitungen auf eine andere Seite, jetzt, während gerade die letzte Zeile des Codes zu ändern, wie unten erwähnt Code wird Website erlaubt mir nicht die innere Seite zuzugreifen.

driver.findElement(By.id("loginbtn")).click(); 

Kann mir jemand zu diesem Thema helfen? Ich würde gerne wissen, warum click() hier nicht gut funktioniert.

Mit freundlichen Grüßen.

+0

könnte Doppel sein, http: //stackoverflow.com/questions/17530104/selenium-webdriver-submit-vs-click – Chetan

+0

Es ist keine doppelte Frage, ich habe die Website-URL, zusammen mit meinem Code-Snippet zur Verfügung gestellt. aber beide Methoden verhalten sich hier anders. Können Sie mir erklären, warum click() auf der oben genannten Website nicht gut funktioniert? –

+0

hinzufügen warten vor Klickmethode. Irgendwann Klick-Methode ausführen mit Wissen Schaltfläche ist klickbar oder nicht. – Chetan

Antwort

1

Auch nicht funktioniert, wenn Sie manuell auf die Schaltfläche klicken, wird es nicht funktioniert. Dies könnte ein Anwendungsproblem sein. Soweit Submit() betroffen ist, kann es für die Schaltflächen innerhalb des Formular-Tags verwendet werden. Im Grunde versuchen Sie das Formular einzureichen.

Wenn man sich die HTML genau hinschauen, wenn Sie auf die Schaltfläche klicken, „isLocked btn btn-Sekundär Vorbelastung“ die Klassenwertänderungen und im Backend, wenn Sie die auf die Registerkarte Netzwerk im Konsolenfenster gehen und analysieren die login.js, sie haben eine Funktion

$(document).ready(function(){$("#T1").focus();$(".removeerrorontype").keypress(function(){$(this).removeClass("error");});$("#loginbtn").click(function(e){if($(this).hasClass("isLocked")){return false;} 

Also, ich fühle die obige Bedingung false zurückgibt und daher ist es nicht weiter bewegen. "isLocked" macht hier einen Unterschied.

0

Sowohl click() als auch submit() funktionieren auf die gleiche Weise, außer dass submit() nach Formularen sucht.

Sie können die .click() - Methode verwenden, um auf eine beliebige Schaltfläche zu klicken. Es gibt keine Einschränkung für Klickschaltflächen. Das bedeutet, dass element's type = "button" oder type = "submit", .click() -Methode für beide funktioniert. Wenn die Schaltfläche innerhalb des Tags oder die Schaltfläche außerhalb des Tags ist, funktioniert die click() -Methode.

.submit() -Methode wird nur für das Senden von Formular nach dem Klicken auf die Schaltfläche verwendet. Das bedeutet, dass element's type = "submit" und button innerhalb von tag sein soll, dann wird nur submit() funktionieren.

In Ihrem Fall, warum klicken wird, könnte nicht spezifisch für die submit() oder klicken Sie auf() Ich denke,

0

Versuchen Folgende: für mich gearbeitet (ich glaube)

driver.manage().window().maximize();  
driver.findElement(By.id("T1")).sendKeys("[email protected]"); 
driver.findElement(By.id("T2")).sendKeys("[email protected]"); 

WebDriverWait wait = new WebDriverWait(driver, 20); 
WebDriverWait wait1 = new WebDriverWait(driver, 20); 

wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.id("loginbtn")))); 
System.out.println("Is Visible"); 
wait1.until(ExpectedConditions.elementToBeClickable(driver.findElement(By.id("loginbtn")))); 
System.out.println("Is clickable"); 

driver.findElement(By.id("loginbtn")).click(); 
+0

Hallo @Kushal, Ich habe Ihren Code versucht, aber immer noch mit dem gleichen Problem konfrontiert. –

+0

Ich habe den gleichen Code versucht; Es war in der Lage, auf die Schaltfläche zu klicken, da es mir wegen falscher Anmeldeinformationen einen Fehler gibt. Hast du es mit echten Krediten versucht? – kushal

+0

Versuchen Sie es mit 'driver.findElement (By.id (" loginbtn ")). Submit(); 'Vergleichen Sie dann das Verhalten der Klick- und Submit-Methode. –

1

submit() Verfahren sind nicht auf ein bestimmtes button oder input Feld, aber <form> Element

Es ist wie unten arbeitet an Vorfahren (dies ist Python Code, sollte aber Punkt gleich sein):

element_in_form = driver.find_element_by_id('id_of_ANY_element_inside_form') # this might be any locator, not only id 
form = element_in_form.find_element_by_xpath("./ancestor-or-self::form") 
driver.execute_script("arguments[0].submit()", form) 

Es gibt keine dif ference was ist element_in_form (Benutzername eingeben, Passwort eingeben, Login-Taste ...) solange es innerhalb <form>.

Forgot Username/password? Link auch innerhalb derselben Form und aus irgendeinem Grund entfernt von submit() verwenden Sie nicht die Taste Login tatsächlich auslösen, aber Forgot Username/password? Link ...

Ich kann mir denken, nur, dass dieser Fehler der Entwickler ist

Verwandte Themen