Selenium 查看geb中是否存在div

Selenium 查看geb中是否存在div,selenium,geb,Selenium,Geb,我们正在使用Geb实现自动化。在加载每个页面之前,我已经加载了微调器。我们正在使用waitFor(),但这需要很长时间,而且脚本的运行时间超过了指定的时间 <div classname="loader"></div> 但我得到的错误是 geb.waiting.WaitTimeoutException: condition did not pass in 40.0 seconds (failed with exception) at geb.waiting.

我们正在使用Geb实现自动化。在加载每个页面之前,我已经加载了微调器。我们正在使用waitFor(),但这需要很长时间,而且脚本的运行时间超过了指定的时间

   <div classname="loader"></div>
但我得到的错误是

   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
我不知道如何检查div是否存在。如果我延长等待时间,我将得到元素未找到错误


请告诉我您的输入。

如果(!$(“.loader”)==未定义的话,您可以尝试使用code
{}

您的布尔表达式比它需要的复杂,在这种情况下,您可能注意到了(!)一些您并不想要的东西

一般来说,你永远不需要比较布尔值。(bool1==true)与saying(bool1)相同

而不是说

if(!$(".loader").displayed== true){}
只要说:

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


在等待微调器离开时,是否检查div是否可见? 我遇到了一个和这一模一样的问题,困扰着我。以下是我和同事提出的解决方案:

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())
}

如果需要任何进一步的信息,请告知我,我将未定义为错误。这是不可接受的,因为JavaScripthi我尝试了所有选项,直到我们有了if循环可以工作的元素。否则我将得到elementNotFound错误。让我知道你的想法
if(!$(".loader").displayed){} //to check if the div is not displayed
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())
}