2014-10-14 4 views
4

У меня есть скрытые кнопки на странице. Когда я нажимаю на ввод текста, одна из этих кнопок отображается на странице. До: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> 

После нажатия на второй вход:

<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> 

Так я пытаюсь взаимодействовать с второй кнопкой на следующих селекторов в моем тесте:

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

, но у меня есть следующая ошибка:

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

Если я wri te:

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

это работает, но мне нужно работать с одной первой видимой кнопкой на странице. Что не так?

ответ

8

К сожалению, нет селектора CSS, чтобы найти видимые элементы, но вы можете использовать displayed property из Navigator и ее findAll() method найти кнопку, которая видна:

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

Я знаю, что это старое, но хотели бы добавить, что это даст вам набор Navigator, содержащий все кнопки отправки, а не только первый (что и задает вопрос). если вы хотите только первое вхождение, вы должны сказать submitButton.first(), или вы можете использовать закрытие 'find()' вместо 'findAll()' – switch201

Смежные вопросы