2015-08-17 1 views
1

J'ai une application web qui permet à l'utilisateur de télécharger un fichier de style XML, puis de le modifier dans le navigateur. J'essaie de tester le scénario avec des éclats. À condition d'avoir la bonne entrée (id="form-widgets-body"):Python: téléchargement de fichier réellement accessible dans Splinter?

enter image description here

... Je ne peux trouver aucun problème, ainsi que l'utilisation attach_file avec son nom:

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

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

Mais le problème avec attach_file est qu'il ne rend pas réellement le dossier accessible à moi. Peut-être que cela indique simplement à l'entrée que quelque chose a été rempli, ce qui est bien pour d'autres types de tests? (Par exemple, vous ne pouvez pas passer à l'écran suivant dans une application financière jusqu'à ce que vous téléchargez le document X)

J'ai essayé à la place send_keys, mais cela n'a pas fonctionné comme prévu:

(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' 

Cela dit, quelques questions:

  1. Je send_keys vraiment faire ce que je veux (à savoir, un téléchargement de fichier accessible qui est comme la vraie chose)? Si oui, quelle est la droite façon de l'appeler?

  2. Sinon, que puis-je faire d'autre? (nécessitant js, peut-être?)

Répondre

0

Aha! send_keys fonctionne en effet; Je dois juste accéder au conducteur sous-jacent de sélénium au lieu de seulement l'un de l'éclateur:

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