В порядке эксперимента разделите получение элемента (где и вылетает это исключение) от клика по нему. Оберните в try{} catch {} именно findElement.
кстати, элемент у вас, случайно, не двигается во время клика?
Вылетало именно при попытке .click(), елемент передобавлялся в DOM из за чего и вылетала ошибка.
try...catch не подходит для ассинхронного кода. Ошибка приходит именно в этот error callback , function(err) где мы и обрабатываем полученную ошибку.
Сейчас в этом коде при любой ошибке просто возвращаеться false в wait и wait пытается еще раз попробовать найти елемент и сделать клик.
Можно написать как то так, что бы перехватывать именно нужную ошибку.
driver.wait(function() { return driver.findElement(target).click().then( function(click) { return true }, function(err) { if (err = StaleElementReferenceError) { return false; } else { throw err; } } ); }, 10000);
ээ
для асинхронного - не подходит, но ведь findElement и click должны выполняться последовательно. а, понял о чём вы. wait асинхронный.
Вы написали именно то, что я и имел в виду. Более удобного способа обходить StaleElementException я не знаю.