2017-05-31 1 views
1

Wir verwenden Geb für die Automatisierung. Ich habe Spinner geladen, bevor jede Seite geladen wird. wir verwenden waitFor(), aber es dauert eine lange Zeit und die Skripte werden immer mehr als die angegebene time.The DOM-Element ausgeführt istsehen, ob die div ist vorhanden oder nicht im geb

<div classname="loader"></div> 

Ich habe versucht zu sehen, ob das Element vorhanden ist.

if(!$(".loader").displayed== true) 
    {} 

Aber ich bin immer Fehler wie

geb.waiting.WaitTimeoutException: condition did not pass in 40.0 seconds (failed with exception) 

at geb.waiting.Wait.waitFor(Wait.groovy:138) 
at geb.waiting.DefaultWaitingSupport.doWaitFor(DefaultWaitingSupport.groovy:51) 
at geb.waiting.DefaultWaitingSupport.waitFor(DefaultWaitingSupport.groovy:46) 
at geb.Page.waitFor(Page.groovy:516) 
at geb.Browser.methodMissing(Browser.groovy:206) 
at geb.spock.GebSpec.methodMissing(GebSpec.groovy:56) 
at loaderSpec(loaderSpec.groovy:415) 
Caused by: Assertion failed: 

$(".loader").displayed== false 
|   |  | 
    |   true  false 
    [[[ChromeDriver: chrome on XP (1b3943691dd96ebaf9098b1720c87ee9)] -> css 
selector: .loader]] 

at loaderSpec(loaderSpec.groovy:415) 
at loaderSpec(loaderSpec.groovy:415) 
at geb.waiting.Wait.waitFor(Wait.groovy:127) 
... 6 more 

Ich bin nicht sicher, wie zu überprüfen, ob die div vorhanden ist oder nicht vorhanden ist. Wenn ich die Wartezeit verlängere, bekomme ich Element nicht gefunden Fehler.

Bitte lassen Sie mich Ihre Eingabe wissen.

+0

Bitte lassen Sie mich wissen, ob weitere Informationen erforderlich – user940371

Antwort

1

Sind Überprüfung Sie, dass die div sichtbar ist, während Sie warten auf die Spinner weg zu gehen ? Ich hatte ein Problem genau so, das mich geplagt hat. Hier ist die Lösung meine Mitarbeiter und ich kam mit:

try{ 
    waitFor(10) { element.isDisplayed() } //wait for spinner to kick in 
    waitFor() { !element.isDisplayed() } //wait for spinner to go away 
} catch(WaitTimeoutException e) { 
// if spinner loads & deloads faster than this code is reached 
// then WTE will be caught and we dont need to handle the spinner any more 

    //println(e.printStackTrace()) 
} 
+0

Vielen Dank. Es funktionierte – user940371

0

Sie können mit Code versuchen if(!$(".loader")==undefined){}

+0

ich als Fehler undefiniert bin immer. Dies akzeptiert nicht als Java-Skript – user940371

1

Ihr boolean Ausdruck ist komplizierter, als es sein muss, und in diesem Fall werden Sie vielleicht erwähnen (!) Etwas, das Sie bedeuten nicht, zu sein.

im Allgemeinen müssen Sie nie booleans vergleichen. (bool1 == true) ist das gleiche wie (bool1).

anstatt zu sagen

if(!$(".loader").displayed== true){} 

nur sagen:

if($(".loader").displayed){} //to check if the div is displayed 

oder

if(!$(".loader").displayed){} //to check if the div is not displayed 
+0

Hallo, ich habe alle Optionen versucht, bis wir das Element haben, die If-Schleife wird funktionieren. Sonst bekomme ich elementNotFound Fehler. Lass mich deine Gedanken wissen – user940371

Verwandte Themen