если попроще, то создать отдельную функцию и тупо проверять после каждого действия или в теории, я думаю, можно создать слушателя на js который асинхронно в бесконечном цикле будет делать тож самое, что в первом варианте, но при этом без ненужных лишних блоков и будет проверять пока его не остановишь
как-то так, а дальше уже вызываем функцию решения капчи в бас или пишем/ищем на js
// раз в секунду ищем элемент
let i = setInterval(function() {
if (document.querySelector("#onesignal-popover-dialog")){
// если нашли останавливаем таймер и вызываем алерт
clearInterval(i);
alert("element found")
}
}, 1000);
// эмуляция асинхронного добавления, через 2 секунды добавим элемент
setTimeout(function(){
document.write("<div id='onesignal-popover-dialog'>hello</div>")
},1000)
первый блок кода отслеживает появление элемента с id #onesignal-popover-dialog, как только находит показывает alert
соответственно вместо alert нужно выполнить необходимое в вашем случае действие (запустить функцию бас, например, для решения капчи)
второй кусок эмулирует динамическое появление этого блока на стр
единственное, тут нужно будет скорей всего делать не под id а под class, хотя зависит от целевого ресурса...
подробнее тут - https://learn.javascript.ru/searching-elements-dom