2013-08-02 9 views
-1

Comment télécharger un fichier en utilisant webdriver.what de sélénium est la logique de télécharger un fichier en sélénium WebDriverComment télécharger un fichier en utilisant le pilote Web Selenium.

+0

duplication possible de [Accéder à la boîte de dialogue de téléchargement du fichier dans Firefox] (http://stackoverflow.com/questions/1176348/access-to-file-download-dialog-in-firefox) – Edu

+0

cochez cette case http: // stackoverflow .com/q/16746707/624003 – Sankumarsingh

+0

Possible copie de [Comment télécharger un fichier et l'enregistrer à l'emplacement désiré en utilisant Selenium Webdriver] (http://stackoverflow.com/questions/16746707/how-to-download-any- file-and-save-it-à-the-desired-location-using-selenium-webd) – Liam

Répondre

1
  1. Si vous voulez dire « tout » fichier que navigateur montrerait, par exemple un fichier HTML, il vous suffit de appelez

    driver.getPageSource(); 
    
  2. Si vous voulez dire « tout » fichier comme dans le « enregistrer le lien sous » ou un menu similaire des navigateurs, vous êtes hors de la chance, car cela déclenche le fichier de téléchargement conduit OS-chooser d'un navigateur qui peut Ne pas être contrôlé par Selenium Webdriver.

Solution à 2.

Vous avez deux options ici, je pense:

a) utiliser quelque chose comme AutoIT ontop de sélénium. Cela devient très difficile à contrôler dans un court laps de temps, n'est pas portable et rendra vos tests plus enclins à l'erreur.

b) La meilleure solution est probablement de télécharger le fichier en dehors du sélénium. J'ai trouvé un joli article describing the whole dilemma ici. Il contient également une bonne solution au problème qui prend même soin de la gestion des cookies si nécessaire pour le téléchargement.

0

En fait, ce n'est pas une bonne idée de télécharger des fichiers en utilisant le pilote Web. Je ne pense pas que vous ayez besoin du fichier; dans la plupart des cas, c'est juste pour tester les liens de téléchargement et à cette fin, vous pouvez utiliser driver.find_element_by_tag_name("a"), driver.find_elements_by_link_text("some text") ou driver.find_elements_by_partial_link_text("a"); après avoir trouvé l'élément, il suffit de le cocher click() et de vérifier si l'URL de la réponse correspond bien à ce qu'elle devrait être.

encore si vous avez un objectif pour le téléchargement complètement le fichier, je serais heureux si vous me le faire savoir.

EDIT:

Aujourd'hui, je visite this page et je pense que cela vous aidera, en particulier this comment.

+2

Oui, comment télécharger une feuille de calcul CSV? – User

+0

Cela dépend en quelque sorte de la page à partir de laquelle vous essayez de télécharger le fichier. Si vous avez l'URL de téléchargement complète et que vous n'êtes pas obligé d'utiliser le pilote Web, vous pouvez utiliser la bibliothèque 'urllib' comme suit:' urllib.urlretrieve ("download_url") '. J'ai essayé cette commande pour les téléchargements de fichiers Internet et intranet; les deux ont réussi, mais il semble que dans certains cas pour les fichiers intranet, il ne peut pas comprendre correctement l'extension de fichier. –

+0

Oui, je dois malheureusement utiliser du sélénium. J'aimerais pouvoir utiliser urllib dans ce cas. – User

Questions connexes