В довольно сложном тестовом скрипте python-selenium (который недоступен извне, поэтому я не могу привести пример), у меня есть следующая строка, ожидающая, пока элемент станет видимым:
WebDriverWait(basedriver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.ID,"clb-iframe-workspace")))
elem = WebDriverWait(basedriver, 20).\
until(EC.element_to_be_clickable((By.XPATH, '//div[contains(text(), "Feature extraction")]')))
В большинстве случаев проблем нет, и веб-драйвер находит нужный элемент. Но иногда (примерно 1 из 10 случаев) я получаю следующую ошибку:
WebDriverException: Message: TypeError: can't access dead object
И странно, что это происходит прямо сейчас! Selenium даже не удосуживается подождать 20 секунд, которые я хочу, чтобы Selen подождал, используя WebDriverWait
!
Может быть, переключатель iframe
как-то связан с этим?
Я также попытался сделать снимок экрана перед неудачной строкой - в обоих случаях я получаю пустой белый экран. Так как же отладить это дальше сам? И почему WebDriverWait
не ждет ...?
Добавление
- Я реализовал предложение от DebanjanB, но все еще получаю ту же ошибку на уровне 5%.
- Если я использую более медленное интернет-соединение, ошибка происходит почти все время !
- Когда я вставляю код для создания снимков экрана и записываю исходный код страницы (что занимает некоторое время), частота ошибок снова уменьшается.
Так что я бы сказал, что это определенная проблема синхронизации, в сочетании с ошибкой в селене ...