Page 1 sur 1

[R] Une curiosité IE

Posté : dim. 10 févr. 2008 22:19
par Ahbadiane
Ce que je veux faire : enregistrer une page WEB dans IE au format TXT dans un fichier c:\temp\test\test.txt

Code : Tout sélectionner

; sous IE ouverture de la fenêtre "Enregistrer la Page Web"
Send("!F")
Send("r")
; attendre que la fenêtre soit ouverte et encore 1/2 seconde
WinWaitActive("Enregistrer la page Web")
Sleep(500)
Send("c:\temp\test\test.txt")
….
 
Le problème : les \ (backslash) ne sont pas envoyés dans le champ "Nom du fichier" et j'obtiens l'enregistrement du fichier sous le nom "c:temptesttest.txt"

Ce problème ne se produit que sur mon PC sous Windows XP pro 2002 service pack 2 et IE 7.0.5730.11

Je n'ai pas de problème sur un autre PC sous Vista et IE 7.0.6000 et si je fais la même chose manuellement ça marche également

Est-ce que quelqu'un aurait une idée sur ces backslashs fugueurs ?

Re: [..] Une curiosité IE

Posté : lun. 11 févr. 2008 01:21
par arrkhan
et bien en fait ils ne sont pas fugueurs, mais tout simplement interdit dans les nom de fichiers sous windows, et la fenetre te demandant le nom du fichier considere donc que tu veux sauvegarder a l'endroit par defaut en utilisant ton chemin moins les BS... CQFD ^^

Re: [..] Une curiosité IE

Posté : lun. 11 févr. 2008 08:49
par Ahbadiane
arrkhan a écrit :et bien en fait ils ne sont pas fugueurs, mais tout simplement interdit dans les nom de fichiers sous windows, et la fenetre te demandant le nom du fichier considere donc que tu veux sauvegarder a l'endroit par defaut en utilisant ton chemin moins les BS... CQFD ^^
Bonjour arrkhan,
Les \ ne sont pas interdits en saisie, d'ailleurs comme je le notais dans mon message, ils sont acceptés en saisie manuelle et sur un autre PC.
Non je pense qu'il y a un Pb entre le Send() d'AutoIt et cet écran, mais je sais vraiment pas pourquoi

Re: [..] Une curiosité IE

Posté : lun. 11 févr. 2008 10:47
par ani
bonjour

je ne pourrais expliquer le pourquoi du comment il faut utiliser les \\ au lieu de \
on trouve défois dans le regédit ce double slash :o
mais c'est windows :)

Send("c:\\temp\\test\\test.txt")

la question c'est pour la curiosité ou l'enregistrement d'une page web vers un fichier texte ?

Re: [..] Une curiosité IE "Enregistrer sous"

Posté : mar. 12 févr. 2008 08:12
par Ahbadiane
Bonjour ani,

Les doubles slash ne résolvent pas mon problème
Le problème ne vient pas du chemin Windows mais de la commande Send("c:\temp\test\test.txt") qui n'envoi pas les \ dans la fenêtre IE "Enregistrer sous" et ceux ceci que sur une machine. Je pense que le problème vient plutôt d'IE !?

Re: [..] Une curiosité IE

Posté : mar. 12 févr. 2008 08:22
par Ahbadiane
Rebonjour,

A la question d'Ani "Enregistrer une page Web en texte" : Cette page contient des informations de reporting, des centaines d'informations que je vais ensuite rechercher dans le fichier texte sauvegardé. Même si je l'enrtegistre au format HTML, j'aurai toujours le problème des slash qui ne sont pas envoyés dans l'interface.

J'ai une question : Existe-t-il un moyen de sauvegarder une page WEB autrement qu'au travers de l'interface d'IE (choix "Enregistrement sous") ? une commande AutoIt ?

Re: [..] Une curiosité IE

Posté : mar. 12 févr. 2008 10:27
par Tlem
Il serait peut-être plus simple que vous récupériez les informations directement avec AutoIt.

Regarder les liens suivant (Peut-être pourront-il vous aider) :
http://www.autoitscript.fr/viewtopic.php?f=3&t=93
http://www.autoitscript.fr/viewtopic.php?f=3&t=350
http://www.autoitscript.fr/viewtopic.php?f=3&t=410

Je vous conseil aussi la lecture de l'aide de AutoIt en recherchant ce qui à un rapport avec _IE...


Edit : Sinon autre solution : http://www.autoitscript.com/forum/index ... st&p=21348

Re: [R] Une curiosité IE

Posté : mar. 12 févr. 2008 16:46
par Ahbadiane
Bonjour Tlem,

La solution est bien de faire l'enregistrement du Body de la page WEB avec _IEBodyReadText

Code : Tout sélectionner

$sText = _IEBodyReadText ($oIE)
$file = FileOpen ( "c:\temp\test\test.txt", 2)
FileWriteLine($file, $sText)
FileClose($file)
 
Cette solution est d'ailleurs plus "sécurisée" que d'envoyer des commandes Send() dans une interface utilisateur

Merci à tous