Comment télécharger une image à l'aide de Sélénium (toute version)?
Je me demandais, comment peut-on utiliser le sélénium/webdriver pour télécharger une image pour une page. En supposant que la session de l'utilisateur est nécessaire pour télécharger l'image donc avoir pur URL n'est pas utile. Les exemples de code est très apprécié.
- entendez-vous une capture d'écran?
- l'image comme il est indiqué sur la page. Pas l'ensemble de la capture d'écran de la page.
Vous devez vous connecter pour publier un commentaire.
Je préfère faire quelque chose comme ceci :
Ici est un truc qui fonctionne dans Firefox et Chrome, en fait, fondamentalement, le Sélénium pour ouvrir une nouvelle fenêtre de navigateur juste avec l'image et le télécharge avec Ctrl+S.
Une autre option serait de simuler le clic droit et utilisez le menu contextuel ici
Je préfère comme ça:
Un autre surtout bonne solution est de le télécharger directement par simple requête HTTP.
Vous pouvez utiliser webDriver de la session de l'utilisateur, car il stocke les cookies.
Dans mon exemple, je suis juste à l'analyse de ce code d'état qu'il renvoie. Si 200, puis l'image existe et il est disponible pour afficher ou télécharger. Si vous avez vraiment besoin de télécharger le fichier lui-même - vous pouvez simplement obtenir toutes les données d'image à partir de httpResponse entité (l'utiliser comme simple flux d'entrée).
Les autres solutions ne fonctionnent pas sur tous les navigateurs, ne fonctionnent pas sur tous les sites, ou les deux.
Cette solution devrait être beaucoup plus robuste. Il utilise le navigateur pour afficher l'image, redimensionne le navigateur pour s'adapter à la taille de l'image, prend une capture d'écran, et enfin redimensionne le navigateur vers le format de l'original.
Python:
Un inconvénient de cette solution est que si l'image est très petite, le navigateur ne change pas de taille que les petits, et vous pouvez obtenir une bordure noire autour de lui.
Fonctionne pour moi:
Si vous avez besoin de tester cette image est disponible et existe, vous pouvez le faire comme ceci:
Mais vous devez être sûr, que currentUrl va vraiment faire vous de retour à la page d'avant l'exécution de cette méthode. Dans mon cas, c'était ainsi. Sinon, vous pouvez essayer d'utiliser:
Et aussi, malheureusement, comme il semble, il n'y a aucune chance pour analyser le code d'état de réponse. C'est pourquoi vous avez besoin de trouver tout web spécifique de l'élément sur NOT_FOUND page et vérifiez qu'il était apparu et de décider ensuite - que l'image n'existe pas.
Il est juste de solution, la cause je n'ai trouvé aucune aucune manière officielle pour le résoudre.
NOTE:
Cette solution est utile dans le cas lorsque vous utilisez autorisé session pour obtenir des ressources, et ne peut pas il suffit de le télécharger par ImageIO ou strictement par HttpClient.
utilisation de sélénium pour obtenir l'image src
utiliser le langage de programmation pour ce, pour python;
cochez cette réponse:
Comment enregistrer une image localement à l'aide de Python dont l'adresse URL que je sais déjà?
ici est une solution d'activer javascript.
c'est un peu idiot, et je suis las de frapper la source de l'image du serveur avec de trop nombreuses demandes. quelqu'un peut-il me dire si le fetch() accède à la mémoire cache du navigateur? je ne veux pas de spam du serveur source.
il ajoute un FileReader() de la fenêtre, extrait et convertit l'image en base64 et tags de chaîne sur la fenêtre.
le conducteur peut alors revenir à cette fenêtre variable.