0

Samt Element nicht gefunden in jenkins gefunden, aber gefunden, wenn in Eclipse IDE läuftSamt Element nicht in jenkins gefunden, aber bei der Ausführung in Eclipse IDE

Ich habe eine Methode, die ich regelmäßig in meinem Testfall in meiner Automation bin Aufruf Suite.

Diese Methode ist wie folgt:

public void FillCarNo(WebDriver d, String CarNo) throws Throwable 
{ 
    //Actiondriver.waitForElement(d, AppointmentBooking.CarRegistration, 5); 
    System.out.println("Before using car registration"); 
    String no= Actiondriver.getAttribute(d, AppointmentBooking.CarRegistration, "value", "Car Registration Number"); 
    Thread.sleep(1000); 
    System.out.println("This"+no+"is"); 
    System.out.println("After using car registration"); 
    if(no.equalsIgnoreCase("")) 
    { 
     System.out.println("Inside car registration if loop"); 
     Actiondriver.waitForElement(d, AppointmentBooking.CarRegistration, 20); 
     Actiondriver.type(d, AppointmentBooking.CarRegistration, CarNo, "Entering Car Number"); 
     System.out.println("After car registration if loop"); 
     Thread.sleep(1000); 
    } 
    else 
    { 
     System.out.println("Car Registration Number already filled"); 
    } 
} 

Nun, wenn ich die Test-Suite in Eclipse IDE ausführen führt es die gesamte Suite erfolgreich aber wenn ich die gleiche Suite in Jenkins laufe es wirft Element Fehler nicht gefunden.

Before using car registration 
Thisis 
After using car registration 
Inside car registration if loop 
Unable to locate element: {"method":"xpath","selector":"//* [@id='carRegistrationNumber']"} 
Command duration or timeout: 33 milliseconds 
For documentation on this error, please visit:  http://seleniumhq.org/exceptions/no_such_element.html 
Build info: version: '2.53.0', revision:  '35ae25b1534ae328c771e0856c93e187490ca824', time: '2016-03-15 10:43:46' 
System info: host: 'ROBER-QA', ip: '192.168.137.1', os.name: 'Windows 7',  os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_91' 
Driver info: org.openqa.selenium.firefox.FirefoxDriver 
Capabilities [{applicationCacheEnabled=true, rotatable=false,  handlesAlerts=true, databaseEnabled=true, version=45.0, platform=WINDOWS,  nativeEvents=false, acceptSslCerts=true, webStorageEnabled=true,  locationContextEnabled=true, browserName=firefox, takesScreenshot=true,  javascriptEnabled=true, cssSelectorsEnabled=true}] 
Session ID: 4ec86b11-94e9-48eb-97c7-71b676912654 
*** Element info: {Using=xpath, value=//*[@id='carRegistrationNumber']} 

als U in dem Konsolenausgang das Element sieht CarRegistration arbeitet in erster Linie von .getAttribute feinem, aber innerhalb der Schleife, wenn es wirft Element nicht Fehler gefunden.

Das Element ist als unten:

public static By CarRegistration = By.xpath ("// * [@ id = 'carRegistrationNumber']");

Nur in Jenkins bekomme ich diesen Fehler und sobald ich diesen Fehler bekomme, scheitern auch die restlichen Testfälle. Stuck mit diesem Problem für fast 2-3 Tage. Bitte helfen Sie!

Vielen Dank im Voraus.

+0

bevor Sie nach dem Element in der Schleife suchen, warten Sie einige Sekunden – noor

+0

@noor - Es funktioniert nicht, auch nach dem setzen Thread.sleep (3000) –

Antwort

0

ID ist am meisten bevorzugt für Ortungselement. Da das Element ID hat, können Sie ID wie folgt versuchen:

+0

Sogar By.id hat nicht funktioniert. –

0

Wenn Ihr Jenkins von einem Remote-Server gehostet wird. Überprüfen Sie bitte einmal im Server, was der Automatisierungsfluss ist, wenn der Testlauf aufgerufen wird. Können Sie bitte diese Methode "waitForElement" Definition für mehr Klarheit darüber, wie die Wartezeit funktioniert.

Unter Verwendung des gleichen Locator public static von CarRegistration = By.xpath ("// * [@ id = 'carRegistrationNumber']") versuchen warten auf das Element selbst in erster Linie anklickbar zu sein.

WebDriverWait wait = new WebDriverWait(driver,60); 
     wait.until(ExpectedConditions.visibilityOf(CarRegistration)); 
+0

Ab sofort bin ich ein Starter, wenn es um Jenkins geht, also ist das gesamte Setup auf meinem Laptop, also kein Punkt des Remote-Servers. waitForElement ist eigentlich explizit auf eine benutzerdefinierte Weise für mein Framework geschrieben. CarRegistration ist ein Eingabefeld, in dem Benutzer ihre Fahrzeugnummer eingeben. –

+0

@Robert: Wartet Custom auf das Element, auf das geklickt werden kann, oder auf das Element, das sichtbar sein soll? . Wenn Sie Eclipse als IDE verwenden, versuchen Sie, eine Zeile system.out.println (CarRegistration.isDisplayed()) hinzuzufügen und an dieser Stelle einen Haltepunkt zu setzen und den Code zu debuggen.Dies stellt sicher, ob die ID zu diesem Zeitpunkt tatsächlich auf dem Bildschirm sichtbar ist oder nicht. –

+0

Das Problem, das ich hatte, war wegen Fenstergrößenanpassung Problem. Wenn ich das Fenster mit driver.manage() maximiert habe. Window(). Maximize(); es warf immer Fehler. Also änderte ich die Fenstergröße und das Problem, mit dem ich konfrontiert war, existierte nicht mehr. Dimension d = neue Dimension (1382,744); // Ändern Sie die Größe des aktuellen Fensters auf die angegebene Dimension driver.manage(). Window(). SetSize (d); Dies ist, was ich die Fenstergröße einstellen. –

1

Das Problem, das ich hatte, war wegen Fenstergrößenanpassung Problem. Wenn ich das Fenster mit driver.manage() maximiert habe. Window(). Maximize(); es warf immer Fehler. Also änderte ich die Fenstergröße und das Problem, mit dem ich konfrontiert war, existierte nicht mehr.

Dimension d = new Dimension(1382,744); 
//Resize the current window to the given dimension 
driver.manage().window().setSize(d); 

Das ist, was ich die Fenstergröße einstellen und es funktioniert völlig in Ordnung. Ich weiß nicht, warum Jenkins in maximierten Fenstern kein Element finden kann, aber das löst sich für mich.

+0

guten job Robert Dsilva –

+0

Held meines Tages! –

Verwandte Themen