GEB找到第一个可见元素

shm*_*ova 5 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"> 
    <button class="submit" style="display: none">Save</button>
</div>
Run Code Online (Sandbox Code Playgroud)

点击第二个输入后:

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

<div field='name'>
    <input type="text"> 
    <button class="submit">Save</button>
</div>
Run Code Online (Sandbox Code Playgroud)

所以我尝试在我的测试中通过下一个选择器与第二个按钮进行交互:

static content = {
    submitButton { $("button.submit") }
}
Run Code Online (Sandbox Code Playgroud)

但我有下一个错误:

isorg.openqa.selenium.ElementNotVisibleException: Element is not currently visible and so may not be interacted with
Run Code Online (Sandbox Code Playgroud)

如果我写:

static content = {
    submitButton { $("button.submit", 1) }
}
Run Code Online (Sandbox Code Playgroud)

它有效,但我需要使用页面上的第一个可见按钮.怎么了?

erd*_*rdi 9

不幸的是没有CSS选择器找到可见的元素,但是你可以使用displayed属性Navigator及其findAll()方法找到按钮可见:

static content = {
    submitButton { $("button.submit").findAll { it.displayed } }
}
Run Code Online (Sandbox Code Playgroud)