2017-05-06 2 views
-2

Mein Code. Ich gebe meinen Benutzernamen und mein Passwort in die Felder "userId" und "password" ein. Und ich möchte eine Bedingung schreiben, die überprüft, wenn Sie den "Submit" -Button drücken oder es ist möglich, sich im System anzumelden. Wenn "userId" und "password" korrekt sind, wird beim Drücken der Schaltfläche "Submit" eine neue Seite geladen und der nächste Teil des Codes wird gepostet. Aber ich möchte eine Bedingung hinzufügen, wenn der Benutzer ein falsches Passwort gibt. Nach dem Drücken der "Senden" -Schaltfläche erscheint die Meldung "Ungültige Anmeldeinformationen" auf der Seite. Kann mir jemand helfen, eine solche Bedingung zu schreiben?Bedingung für falsches Passwort Selen java

for(int i =0;i<userName.size();i++){ 
     driver.findElement(By.id("userId")).sendKeys(userName.get(i)); 
     Thread.sleep(6000); 
     driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS); 

     driver.findElement(By.id("password")).sendKeys(password.get(i)); 
     Thread.sleep(6000); 
     driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS); 
     driver.findElement(By.id("Submit")).click(); 

// laden hier neue Seite

  // change password 
      driver.findElement(By.xpath(".//*[@id='_id9']/table/tbody/tr[2]/td[1]/table[1]/tbody/tr[5]/td[2]/a")).click(); 
      driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS); 
      Thread.sleep(6000); 
      driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS); 


      // new password 
      String pwd = RandomStringUtils.random(15, upper+smaller+number+character); 
      System.out.println("New password: " + pwd); 
      driver.findElement(By.id("newPassword")).sendKeys(pwd); 
      Thread.sleep(6000); 
      driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS); 

      // confirm password 
      driver.findElement(By.id("confirmPassword")).sendKeys(pwd); 
      System.out.println("Confirm password: " + pwd); 
      Thread.sleep(10000); 
      driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS); 
+0

Kann ich Sie bitten, mit der von unseren Community-Experten bereitgestellten Lösung zu Ihren vorherigen Fragen zu arbeiten und die Diskussionsthemen zu schließen, bevor Sie eine neue Frage stellen? Danke – DebanjanB

+0

SO ist kein Code-Schreibdienst. Es gibt jede Menge Informationen über SO und das Internet, um Ihnen zu helfen, das zu tun, was Sie fragen. Ein Teil des Lernens nimmt sich tatsächlich die Zeit zu versuchen, das zu tun, was du fragst, bevor du andere darum bittest, deine Arbeit für dich zu tun. Bitte lesen Sie [fragen] und [Wie viel Forschungsaufwand wird erwartet?] (Https://meta.stackoverflow.com/questions/261592/how-much-research-effort-is-sected-of-stack-overflow-users) Bitte geben Sie den von Ihnen ausprobierten Code und das Ausführungsergebnis einschließlich etwaiger Fehlermeldungen usw. an. Geben Sie auch einen Link zu der Seite und/oder dem entsprechenden HTML an. – JeffC

Antwort

0

Versuchen folgende:

nach Schaltfläche Senden; Sie können überprüfen, ob dieses Element auf Ihrer Seite vorhanden ist oder nicht: driver.findElement(By.xpath(".//*[@id='_id9']/table/tbody/tr[2]/td[1]/table[1]/tbody/tr[5]/td[2]/a"));

Wenn dies bedeutet, dass neue Seite geladen wurde, als Login erfolgreich war, oder sonst war es eine schlechte Anmeldung.

Sie können dies tun, nachdem Taste versuchen klicken einreichen folgende:

UPDATE

List<WebElement> myElemnt = driver.findElements(By.xpath(".//*[@id='_id9']/table/tbody/tr[2]/td[1]/table[1]/tbody/tr[5]/td[2]/a")); 

loginSuccessful(myElemnt); 

// Implementierung von loginSuccessful() Funktion:

public boolean loginSuccessful(WebElement element){ 
    try{ 
     element; 
     return true; 
     } 

    catch(Exception e){ 
     System.out.println("Bad Login Information!!"); 
     return false; 
     } 

} 

OLD

String beforeTitle = driver.getTitle(); 

    //put your Click Submit Button code here 

    String afterTitle = driver.getTitle(); 

    if(beforeTitle.equals(afterTitle)){ 

    System.out.println("Bad Login Information!!"); 

    } 
+0

Es sieht OK aus, aber wenn das Element nicht existiert, wird die Wartezeit von 30 Sek. Sie können Ihre eigene Funktion mit dem Element find (und nicht mit den Elementen) erstellen. Ant catch exception für den schnelleren Code –

+0

Tatsächlich funktioniert es, was Sie geschrieben haben. Vielen Dank. Aber wie er @ Hezi Israelisch schrieb. Wenn es keinen solchen Gegenstand gibt, wartet er auf 30s, könntest du ihm helfen, so dass er nicht so lange wartet? – danio900409

+0

Und können Sie die 30 Timeout für den ersten Fall irgendwie reduzieren? Weil der Titel auf beiden Seiten gleich ist :( – danio900409

Verwandte Themen