Capybara/selenium: подождите, пока элемент скроется

Мне нужно дождаться, пока полоса загрузки (div#loading) исчезнет (станет display: none) на этапе огурца. Я ожидаю, что следующее поможет

find('#loading').should_not be_visible

Но, похоже, не ждет. Есть идеи, как этого добиться?


person artemave    schedule 26.09.2011    source источник


Ответы (1)


Вы захотите использовать wait_until, чтобы дождаться выполнения вашего условия.

wait_until { !page.evaluate_script(%{$('#loading').is(':visible')}) } 

Возможно, лучше подождать, чтобы проверить видимость, но в прошлый раз, когда я проверял, page.has_no_css не работает с такими вещами, как :visible.

(Обновление) Хотя has_css не видит селекторов, таких как :visible, Capybara::Node::Element имеет некоторые методы, чтобы сделать вышеприведенное немного красивее.

wait_until { !find("#loading").visible? }
person nowk    schedule 26.09.2011
comment
@MikeAski может быть полезно добавить новый предлагаемый способ для тех, кто придет сюда в будущем. Боже, я ненавижу огурец - person adaam; 15.06.2018