查看 geb 中是否存在 div
see if the div is present or not in geb
我们正在使用 Geb 进行自动化。在加载每个页面之前,我已经加载了微调器。我们正在使用 waitFor() ,但它需要很长时间并且脚本得到的 运行 比指定的 time.The DOM 元素多
<div classname="loader"></div>
我试图查看该元素是否存在。
if(!$(".loader").displayed== true)
{}
但是我收到错误,
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 是否存在。如果我延长等待时间,则会出现找不到元素的错误。
请让我知道您的意见。
您可以尝试使用代码 if(!$(".loader")==undefined){}
您的布尔表达式比它需要的更复杂,在这种情况下,您可能会注意到 (!) 一些您不想要的东西。
一般来说,您永远不需要比较布尔值。 (bool1==true) 等同于 (bool1).
而不是说
if(!$(".loader").displayed== true){}
直接说:
if($(".loader").displayed){} //to check if the div is displayed
或
if(!$(".loader").displayed){} //to check if the div is not 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())
}
我们正在使用 Geb 进行自动化。在加载每个页面之前,我已经加载了微调器。我们正在使用 waitFor() ,但它需要很长时间并且脚本得到的 运行 比指定的 time.The DOM 元素多
<div classname="loader"></div>
我试图查看该元素是否存在。
if(!$(".loader").displayed== true)
{}
但是我收到错误,
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 是否存在。如果我延长等待时间,则会出现找不到元素的错误。
请让我知道您的意见。
您可以尝试使用代码 if(!$(".loader")==undefined){}
您的布尔表达式比它需要的更复杂,在这种情况下,您可能会注意到 (!) 一些您不想要的东西。
一般来说,您永远不需要比较布尔值。 (bool1==true) 等同于 (bool1).
而不是说
if(!$(".loader").displayed== true){}
直接说:
if($(".loader").displayed){} //to check if the div is displayed
或
if(!$(".loader").displayed){} //to check if the div is not 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())
}