Я использую webdriver через ruby (фактически, cucumber watir-webdriver), и я склонен делать это:
def retry_loop(interval = 0.2, times_to_try = 4, &block)
begin
return yield
rescue
sleep(interval)
if (times_to_try -= 1) > 0
retry
end
end
yield
end
Тогда всякий раз, когда у меня появляется контент из-за записи javascript или чего-то еще, я просто оборачиваю его в retry_loop следующим образом:
retry_loop do #account for that javascript might fill out values
assert_contain text, element
end
Как вы заметите, нет снижения производительности, если оно уже есть. Очевидно, обратный случай (проверка того, что чего-то там нет) всегда должен достигать времени ожидания.
Мне нравится, как детали хранятся в методе и тестовом коде в чистоте.
Возможно, вы могли бы использовать нечто подобное в C ++?