Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Каким образом работать с popup на Python selenium WD

python
webdriver
Теги: #<Tag:0x00007f7b6454e480> #<Tag:0x00007f7b6454e1d8>

(Андрей ) #1

Добрый день уважаемые участники форума, я не так давно начал осваивать Python и, соответственно, Selenium webdriver(Mozilla firefox). Появилась проблема, связанная, с работой popup windows, появляющихся при работе с браузером. Простой пример - я пишу авто скрипт, который через Yandex почту или Gmail должен отправить письмо адресату с прикрепленным файлом. Вот тут то и возникает проблема, как в этом открывшемся окне для приаттачивания файла выбрать тот самый файл и кликнуть на кнопку “Open”.
Видел подобное решение проблемы, но на Java, а нужно именно на Python.
Заранее спасибо всем кто откликнулся.


(Andrew Zakordonets) #2

С самим попапом тебе вряд ли удастся взаимодействовать через вебдрайвер, но ты можешь указать путь к файлу для твоего input field :

 String script = "document.getElementById('fileName').value='" + "C:\\\\temp\\\\file.txt" + "';";    
 ((IJavascriptExecutor)driver).executeScript(script);

(Виталий Коряков) #3

Нобходимо именно с помощью вебдрайвера это делать?
Лучше обойтись без вебдрайвера и воспользоваться этим
https://docs.python.org/2/library/email-examples.html


(Андрей ) #4

В принципе нет строгой необходимости. По Вашей ссылке уже ранее лазил - т.е. знаю этот вариант(Но все равно спасибо!!!). Но хотелось бы узнать, возможно ли с помощью каких то способов сделать именно так.


(Виталий Коряков) #5

Именно так - скорее никак, это попап, с которым (если я ошибаюсь - поправьте) вебрайвер взаимодействовать не умеет. Упростите себе жизнь, и пользуйтесь более простым способом.


(Андрей ) #6

Тогда спасибо, что избавили меня от мытарств с этим делом)) Буду этот момент на будущее учитывать!


(rmerkushin) #7

Сделайте через Winium он отлично совместим с selenium :wink:


(sveat0slav) #8

Попробуй какойнибудь AutoIt или Sikuli, но лучше всего как в первом ответе - т.е. без окон)


(Mikhail Dovgiy) #9

У вебдрайвера есть замечательная вещь как Sendkeys(абсолютный путь к файлу), которю нужно применить к инпуту. Это позволит обойти окно загрузки предоставленное браузером.

В случае если все-же необходимо взаимодействовать с этим окошком - можно на автоите черкануть в 2 строчки скрипт.