2014-01-20 3 views
0

У меня есть сценарий python, который пытается загрузить файл с моего ПК в веб-приложение. Я нажимаю через WebDriver конкретную кнопку загрузки в браузере, а затем открывается окно проводника Win7 для навигации и выбора нужного файла для загрузки. Как я могу манипулировать этим окном с помощью pywinauto?Загрузить файл с помощью WebDriver & PyWinAuto

необязательный: это можно сделать и в linux (с соответствующей библиотекой, я полагаю)?

Это мой пример кода:

wd.find_element_by_css_selector("img.editLecturesButtons.fromVideo").click() 
#switch to the lightbox 
wd.switch_to_frame(int("1")) 
#hit upload 
wd.find_element_by_xpath("//*[@id='fileUpload']").click() 
#TODO 
import os,pywinauto.application 
file = os.path.normpath("C:\Users\me\Desktop\image.jpg") 
.... 
+0

Большинство пользователей Webdriver находят изменение для «отправки пути к элементу ввода» THEN »нажмите кнопку« загрузить/отправить ». Вы пробовали это? Это может упростить работу, поскольку с менеджерами загрузки файлов сложно взаимодействовать. –

+0

Я прочитал об этом решении, но я думаю, что это не относится ко мне. Внутри веб-приложения я нажимаю кнопку и появляется лайтбокс. Приложение использует API Filepicker для загрузки и преобразования файлов. Html, который я нашел для конкретной кнопки, является следующим: –

+0

ответ

0

Я согласен с Марком, вы должны попробовать методы WebDriver. Применительно к pywinauto, код может, выглядит следующим образом:

import pywinauto 

pwa_app = pywinauto.application.Application() 
w_handle = pywinauto.findwindows.find_windows(title=u'Open', class_name='#32770')[0] 
window = pwa_app.window_(handle=w_handle) 
ctrl = window['Name'] 
ctrl.SetText(file) 
ctrl = window['OK'] 
ctrl.Click() 

Этого гуманным только для Windows, так как pywinauto использует Win32 API.

+0

Я попробую подход pywinauto, хотя производственный код будет работать на Ubuntu. –