Java mit Selenium "Geister"Loop

Diskutiere Java mit Selenium "Geister"Loop im Allgemeine Java-Themen Bereich.
R

Reeb

Hallo zusammen,
ich bin gerade etwas am verzweifeln, ich benutze Selenium um einen automatisierten Test für eine Webanwendung zu schreiben und bin dabei auf ein Problem gestoßen.

Ich hab zwei Methoden(Code weiter unten):
1) Klicke in das Passwortfeld
2) Schreibe das Passwortfeld

wenn ich beide Methoden einzeln in der Main ausführe funktioniert das einwandfrei, da ich aber für die Übersichtlichkeit die Methoden bündeln will hab ich noch eine Methode geschrieben die nichts anderes macht als die beiden Methoden nacheinander auszuführen.

Wenn ich diese Methode jetzt ausführe wird die erste Methode in einer Schleife ausgeführt und zwar bis vor den eigentlichen Aufruf der zweiten Methode, dafür hab ich einfache System.out benutzt.

Ich habe keine Ahnung wieso da eine Loop entstehen kann, hat wer eine Idee?

Hier der Code der Methoden:

Code:
//Methode to click the Password Field
    public int FieldClickPassword(WebDriver driver, WebDriverWait wait, int check, Logger Logfile, LoginPage loginPage)
    {
        System.out.println("A");
        Logfile.createTestStep("LoginPage", "Click Password Field");
        System.out.println("B");
        if (wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("/html/body/div/div/div/div/div/div/div/form/div[2]/div/input"))) != null)
        //if (wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("loginForm:password"))) != null)
        {
            driver.findElement(By.xpath("/html/body/div/div/div/div/div/div/div/form/div[2]/div/input")).click();
            //driver.findElement(By.id("loginForm:password")).click();
            System.out.println("C");
        }
        else
        {
            check++;
            //System.out.println("Password Field missing");
        }
        System.out.println("D");
        Logfile.closeTestStep();
        
        return check;
    };
    
    //Methode to send keys to the Password Field
    public int FieldSendKeysPassword(WebDriver driver, WebDriverWait wait, int check, Logger Logfile, LoginPage loginPage)
    {
        System.out.println("F");
        Logfile.createTestStep("LoginPage", "Insert Password in Password Field");
        System.out.println("G");
        if (wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("/html/body/div/div/div/div/div/div/div/form/div[2]/div/input"))) != null)
        //if (wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("loginForm:password"))) != null)
        {
            driver.findElement(By.xpath("/html/body/div/div/div/div/div/div/div/form/div[2]/div/input")).click();
            //driver.findElement(By.id("loginForm:password")).click();
            System.out.println("H");
        }
        else
        {
            check++;
            //System.out.println("Password Field can't be written");
        }
        System.out.println("I");
        Logfile.closeTestStep();
        
        return check;
    };

    //Combined Methode to enter Password in the Password Field
    public int FieldSetPassword(WebDriver driver, WebDriverWait wait, int check, Logger Logfile, LoginPage loginPage)
    {
        if (wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("loginForm:password"))) != null)
        {
            loginPage.FieldClickPassword(driver, wait, check, Logfile, loginPage);
            System.out.println("E");
            loginPage.FieldSetPassword(driver, wait, check, Logfile, loginPage);
            System.out.println("J");
        }
        else
        {
            check++;
            //System.out.println("Password Field can't be set");
        }
        return check;
    };
Hier der Code für den Aufruf:

Code:
Das hier funktioniert nicht-->loginPage.FieldSetPassword(driver, wait, parameter.check, Logfile, loginPage);
Das hier funktioniert-->        //loginPage.FieldClickPassword(driver, wait, parameter.check, Logfile, loginPage);
Das hier funktioniert-->        //loginPage.FieldSendKeysPassword(driver, wait, parameter.check, Logfile, loginPage);
Hier ein Ausschnitt von der Konsolenausgabe:

Code:
A
<tr><td>LoginPage</td><td>Click Password Field</td><td>2020-04-30 09:41:37.480</td>
B
C
D
<td>2020-04-30 09:41:39.206</td><td>0:0:0:117</td><td bgcolor=&quot;green&quot;>OK</td></tr>
E
A
<tr><td>LoginPage</td><td>Click Password Field</td><td>2020-04-30 09:41:37.480</td>
B
C
D
<td>2020-04-30 09:41:39.377</td><td>0:0:0:141</td><td bgcolor=&quot;green&quot;>OK</td></tr>
E
A
<tr><td>LoginPage</td><td>Click Password Field</td><td>2020-04-30 09:41:37.480</td>
B
C
D
<td>2020-04-30 09:41:39.473</td><td>0:0:0:69</td><td bgcolor=&quot;green&quot;>OK</td></tr>
E
A
<tr><td>LoginPage</td><td>Click Password Field</td><td>2020-04-30 09:41:37.480</td>
B
C
D...
 
R

Reeb

... Kann als erledigt markiert werden, war ein dämlicher copy paste Fehler, ich hab in der aufrufenden Methode die Methode selbst aufgerufen und nicht die welche den Text in das Feld schreiben soll.. und zusätzlich war noch ein Fehler drin weil die Methode die schreiben sollte anstatt zu schreiben auch nur das Click Event abgesetzt hat.
 
Thema: 

Java mit Selenium "Geister"Loop

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben