Capybara/селен: изчакайте елементът да се скрие

Трябва да изчакам лентата за зареждане (div#loading) да изчезне (да стане дисплей: няма) в краставична стъпка. Очаквам следното да свърши работа

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