по поводу driver.quit() точно не оно. Проблема была в том что у меня в вебдрайвер был определён в глобальном скоупе, а сами тесты работали внутри функции, по этому когда я пытался закрыть его и перезагрузить локально, он зависал глобально. Я всегда обрабатываю в блоке
driver.close()
time.sleep(1)
driver.quit()
Научен горьким опытом) а вот по поводу рута не совсем понимаю. У меня удалённый сервер, там кроме рута других юзеров вообще нет, да и смысла особого не вижу их создавать.
Тоже начал ловить это ошибку, причем на работающим уже месяц проекте.. element not interactable
Какие только не пробовал проверки, пока проблему решить увы не получилось...
Андрей, у меня стоит linux на ноутбуке. И второй системой на отдельном ssd, но мне нужно работать с win приложениями тоже + я работаю с графикой, и полностью отказаться от окон не могу.
К сожалению я так сделать не могу в силу того что приходиться работать с графикой, а тот же фотошоп например так нормально и не работает, не говоря уже про иллюстратор. Сейчас буду пробовать ставить Pro for Workstations, и настраивать виртуальное окружение с старыми версиями vbox и toolbox, если всё получиться то отпишусь обязательно.
Станислав, а VMWare в действительности даёт прирост какой-то? Я по ощущениям не сильно заметил, если xfce например стоит. А VMWare лучше через плеер использовать или Workstation? И если не секрет то какой дистр крутиться?
Ivan Yakushenko, если тебе важно явным образом указывать где именно искать, попробуй посмотреть класс первого
div
//*[@id="app"]/div/div/div[2]/div[1]/div/<- Этого div[2]/div[@data-ref]
Или если у него нет класса, то быть может есть атрибут за который можно будет его вывалить. И уже к нему можно будет обратиться через div[2]/div[@data-ref]
И опять же, ты можешь попробовать найти список этих див'ов ->div[2]/div[@data-ref] через find_elements, и собственно уже там по индексу искать. В любом случае тебе стоить понимать простую истину, что нет явно необходимости указывать вложенность, если элементы имеют уникальный идентификатор или класс. А в данном случае они вообще всегда разные (как я понял).
То есть, достаточно сфокусироваться на на том элементе который точно содержит необходимый атрибут (той конструкцией которую я показал) и уже получить из неё необходимые данные.
p.s если имя класса явным образом не говорит что оно фиксированное (то есть содержит какие-то случные набор чисел и букв), то по нему обращаться НЕ следует, проще зацепиться на уровень выше, или по самому тегу, но никогда не использую хэш в качестве имени класса) ибо он просто смениться и элемент ты не найдешь.
з.ы Рекомендую с селеном работать в связи с блоком finally, ибо веб драйвер имеет свойство умирать в процессах и висеть мёртвым грузом.
Ivan Yakushenko, так моя конструкция и подразумевает что ты не знаешь что внутри атрибута, но ты знаешь что нужный див его точно содержит, и собственно просто вместо поиска одного элемента, ты пишешь S и находишь все вхождения на странице
Ivan Yakushenko, тогда лучше всего использовать принцип find_elementS_by_xpath, то есть он отдаст список из div например, и уже итерируясь по этому списку искать необходимый, ну или зная его положение можно сразу обратиться по индексу через [0]
aab137, пакет зависимости который необходим для корректной работы данной библиотеки. Если у тебя ubuntu можешь просто в консоль прописать sudo apt install python-xlib, либо pip install xlib | Если у тебя винда, то я тебе не завидую))))
Sacred70, всё верно, нужно сначала что бы он стал видимым, но есть вероятность что он открывается в фрэйме, тогда нужно будет менять фокус селена. Ты же вроде писал что открывать меню научился, так открой, потому сделай задержку time.sleep(1) и собственно мой вариант
driver.close()
time.sleep(1)
driver.quit()
Научен горьким опытом) а вот по поводу рута не совсем понимаю. У меня удалённый сервер, там кроме рута других юзеров вообще нет, да и смысла особого не вижу их создавать.