2017-12-15 2 views
0

Ich versuche, mithilfe von Selenium WebDriver bestimmte Werte in verschiedene Textfelder einzugeben. Dabei werden Try-Block- und If-Else-Anweisungen verwendet. Element und stellen Sie dann basierend auf diesem einzelnen Element den entsprechenden Wert bereit. Mein Problem ist, dass meine if-Anweisungen scheinbar als "falsch" gelesen werden, da jedes Mal, wenn die if-else-Anweisung durchgelesen wird, sie in die else {block-and-prints "error" geht.Suchen und Bereitstellen von Werten für Webelemente mithilfe von if-else-Anweisungen in Selenium WebDriver

Ich habe bereits die String-Werte von element.getAttribute ("id") überprüft, und sie sind gleich den Werten, die ich in der If-else-Anweisung angegeben habe.

Ich habe einige graben gemacht und während ich einige if-else-Anweisungen in Bezug auf Element Sichtbarkeit und die Verwendung von element.isEnabled() gefunden habe, habe ich nichts gefunden, wo element.getAttribute() String-Werte verwendet werden, um bestimmte zu finden Web-Elemente und senden Sie anschließend Werte.

Hier ist mein Code:

WebDriver Treiber;

@Test 
public void enterInfo() throws Exception { 

    System.setProperty("webdriver.gecko.driver","C:\\Users\\Kohout\\Documents\\geckoDriver\\geckodriver.exe"); 
    DesiredCapabilities capabilities = DesiredCapabilities.firefox(); 
     capabilities.setCapability("marionette", true); 
     driver = new FirefoxDriver(); 

     driver.get("http://www.firstcry.com/"); 
     Thread.sleep(3000L); 

     WebElement element = driver.findElement(By.id("Email")); 
     typingInfo(element); 

     Thread.sleep(2000L); 

     element = driver.findElement(By.id("mobileprefix")); 
     typingInfo(element); 

     Thread.sleep(2000L); 


     element = driver.findElement(By.id("Mobile")); 
     typingInfo(element); 
    } 



public void typingInfo(WebElement element) throws AWTException { 

    String email = "[email protected]"; 
    String countryCode = "1"; 
    String phoneNumber = "555-318-9357"; 

    try { 

     if(element.getAttribute("id") == "Email") { 

      System.out.println("Commencing command..."); 

      element.sendKeys(email); 

     } else if (element.getAttribute("id") == "mobileprefix") { 

      System.out.println("Commencing command..."); 

      element.sendKeys(countryCode); 
     } else if (element.getAttribute("id") == "Mobile") { 

      System.out.println("Commencing command..."); 

      element.sendKeys(phoneNumber); 

     } else { 

      System.out.println("Error"); 
     } 

    } catch (Throwable t) { 

     System.out.println(t.getStackTrace()); 

    } 

Vielen Dank für Ihre Hilfe und Vorschläge.

+0

Können Sie das Attribut in 'else' Block drucken? 'System.out.println (element.getAttribute (" id ")); System.out.println ("Error"); ' – Buaban

+0

Wird benötigt, um die Funktion equals() anstelle von == zu verwenden, wenn Strings verglichen werden. Große Antworten auf das Problem unten. –

Antwort

0

Try this:

if("Email".equals(element.getAttribute("id"))) { 
     System.out.println("Commencing command..."); 
     element.sendKeys(email); 
    } else if ("mobileprefix".equals(element.getAttribute("id"))) { 
     System.out.println("Commencing command..."); 
     element.sendKeys(countryCode); 
    } else if ("Mobile".equals(element.getAttribute("id"))) { 
     System.out.println("Commencing command..."); 
     element.sendKeys(phoneNumber); 
    } else { 
     System.out.println("Error"); 
    } 
  • Immer equals für String-Vergleich in Java verwenden. == prüft Objekt Gleichheit.
  • Anruf equals auf Zeichenfolgenliterale zu vermeiden möglich NullPointerException.
+0

Das ist es! Ein bisschen peinlich, dass ich vergessen habe, dass wir die equals() -Funktion verwenden müssen, wenn wir String-Werte vergleichen. Danke für die Hilfe! –

+0

@JordanKohout Schön zu hören. Der stackoverflow-Weg, _thank_ you_ zu sagen, ist die Antwort zu akzeptieren und upvote. Sie verdienen sogar einen Ruf dafür. –

+0

Absolut, danke für das Teilen. Sie wurden aufgeputscht, guter Herr/Frau. –

0

Ich denke, es ist, weil Sie == Operator nicht richtig für String-Vergleich funktioniert. Versuchen Sie den Code geändert.

public void typingInfo (WebElement Element) wirft AWTException {

String email = "[email protected]"; 
String countryCode = "1"; 
String phoneNumber = "555-318-9357"; 

try { 

    if("Email".equalsIgnoreCase(element.getAttribute("id")) { 

     System.out.println("Commencing command..."); 

     element.sendKeys(email); 

    } else if ("mobileprefix".equalsIgnoreCase(element.getAttribute("id")) { 

     System.out.println("Commencing command..."); 

     element.sendKeys(countryCode); 
    } else if ("Mobile"..equalsIgnoreCase(element.getAttribute("id")) { 

     System.out.println("Commencing command..."); 

     element.sendKeys(phoneNumber); 

    } else { 

     System.out.println("Error"); 
    } 

} catch (Throwable t) { 

    System.out.println(t.getStackTrace()); 

} 
+0

Ausgezeichnet! Danke für den zusätzlichen Zusatz "IgnoreCase", sehr hilfreich. –

Verwandte Themen