2015-08-17 2 views
1

У меня есть веб-приложение, которое позволяет пользователю загружать файл в стиле XML, а затем изменять его в браузере.Python: действительно доступная загрузка файла в splinter?

Я пытаюсь проверить сценарий с осколком. При условии, у меня есть правильный вход (id="form-widgets-body"):

enter image description here

... Я не могу найти его не проблема, а также использование attach_file с его именем:

(Pdb)  brwsr.find_by_id('form-widgets-body') 
[<splinter.driver.webdriver.WebDriverElement object at 0x7f2be3a32dd0>] 

brwsr.attach_file('form.widgets.body', PATH_TO_FILE)

Но проблема с attach_file в том, что она фактически не делает файл доступным для меня. Может быть, он просто сообщает, что что-то было заполнено, что хорошо для других видов тестов? (Например, вы не можете перейти к следующему экрану в финансовом приложении, пока вы не загрузите документ X)

Я попытался send_keys вместо этого, но он не работает, как ожидалось:

(Pdb)  brwsr.find_by_id('form-widgets-body').send_keys 
*** AttributeError: 'ElementList' object has no attribute 'send_keys' 
(Pdb)  brwsr.find_by_id('form-widgets-body')[0].send_keys 
*** AttributeError: 'WebDriverElement' object has no attribute 'send_keys' 

С учетом сказанного, некоторые вопросы:

  1. бы send_keys на самом деле делать то, что я хочу (то есть, доступное для загрузки файла, точно так же как реальная вещь)? Если да, то что такое Право Способ называть его?

  2. Если нет, что еще я могу сделать? (требуется js, может быть?)

ответ

0

Aha! send_keys действительно работает; Мне просто нужно получить доступ к основному драйверу селена, а не только к осколку:

brwsr.driver.find_element_by_id('form-widgets-body').send_keys(   
     PATH_TO_FILE)