Testing GEB查找第一个可见元素

Testing GEB查找第一个可见元素,testing,groovy,automated-tests,geb,Testing,Groovy,Automated Tests,Geb,我在页面上有一些隐藏的按钮。当我点击文本输入时,其中一个按钮显示在页面上。之前: <div field='login'> <input type="text"> <button class="submit" style="display: none">Save</button> </div> <div field='name'> <input type="text"> <

我在页面上有一些隐藏的按钮。当我点击文本输入时,其中一个按钮显示在页面上。之前:

<div field='login'>
    <input type="text"> 
    <button class="submit" style="display: none">Save</button>
</div>

<div field='name'>
    <input type="text"> 
    <button class="submit" style="display: none">Save</button>
</div>
但我还有一个错误:

isorg.openqa.selenium.ElementNotVisibleException: Element is not currently visible and so may not be interacted with
如果我写:

static content = {
    submitButton { $("button.submit", 1) }
}

它可以工作,但我需要使用页面上第一个可见的按钮。有什么问题吗?

不幸的是,没有css选择器来查找可见元素,但您可以使用
导航器及其来查找可见的按钮:

static content = {
    submitButton { $("button.submit").findAll { it.displayed } }
}

我知道这很旧,但我想补充一点,这将为您提供一个包含所有提交按钮的导航器集,而不仅仅是第一个按钮(这是问题要求的)。如果您只想要第一次出现,可以说submitButton.first(),或者可以使用闭包
find()
而不是
findAll()
static content = {
    submitButton { $("button.submit", 1) }
}
static content = {
    submitButton { $("button.submit").findAll { it.displayed } }
}