c'est normal qu'il se passe rien après l'apparition du bandeau j'ai bloqué les lignes et mis un exit sub dans la sub
c'etait juste pour te montre en IE non visible comme il devient le bandeau
c'est normal qu'il se passe rien après l'apparition du bandeau j'ai bloqué les lignes et mis un exit sub dans la sub
c'etait juste pour te montre en IE non visible comme il devient le bandeau
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
1er essai : bloqué sur la boucle de la page ne passant pas à "complete" …
Fermeture d'IE via le Gestionnaire des tâches (là il suffirait d'un classique On Error Goto pour éviter cela !)
puis second essai : OK ‼ Le bandeau apparait dans un popup classique …
Troisième essai en réactivant Enter et en enlevant l'Exit Sub : cela fonctionne !
En tout cas sur cette configuration, je testerais sur une autre …
Pour palier au problème de la boucle sans fin, je modifierais comme dans ma Demo2 en testant la disponibilité d'un élément …
C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)
c'est le but!!OK ‼ Le bandeau apparait dans un popup classique …
par les api je remet les attribut classique d'une fenêtre Windows et je la sépare de la fenêtre IE en changeant sont parent
comme ca on peut travailler avec IE invisible ,tu vois le truc
sympa non?
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Oui !
Tu rends visible juste ce qu'il faut, le SendKeys fonctionne bien …
C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Je parlais de ton SendKeys ‼
Sinon c'est toujours mon code du post #33 en page 2 (lignes n°15 à 17) …
C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)
Du nouveau ! J'ai migré un PC Windows 8 vers Windows 8.1 sans percuter que fatalement l'IE10 passerait en IE11 …
• Déjà cela touche les codes en VBScript ! Le premier test après la migration et en plein dans le mille !
Code ne fonctionnant plus avec IE11 pour tester si un objet est bien présent dans la page :
. . .While Not IsObject(.Document.all("NomObjet")) …
Contournement pour IE11 : While .Document.all("NomObjet") Is Nothing mais ne fonctionnant pas avec les versions antérieures !
• David, j'ai le même message d'erreur, celui de ton post #34 mais seulement lors du second lancement de mon code du post #33
car lors du premier aucun souci, le téléchargement s'effectue bien même si j'ai l'impression que c'est un peu plus long qu'avec IE10 …
Et j'ai trouvé quelque chose d'étonnant : l'instruction Quit d'IE11 ferme bien l'application
mais en vérifiant avec le Gestionnaire des tâches il subsiste un résiduel dans les processus !
En le supprimant, mon code fonctionne de nouveau !
David, si tu peux vérifier qu'il n'y ait rien en mémoire concernant IE avant de lancer mon code …
C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)
Marc c est normal le. Residuel avec W7 aussi en fait si ti utilise office 32 l objets IE. Quand IEest lancé. Le syswow 64 fait son boulot et lance donc l exe du (X86) ca l a toujours fait c est pour cela les nuances quand au fonctionnement selon les versions
En direct de ma plage sous les pins donnerais plus d explications ce soir
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Marc : j'ai regardé dans le gestionnaire des tâches et effectivement il y a un processus résiduel Internet Explorer qui reste dans les processus en arrière-plan alors même que IE soit apparemment fermé suite au IE.Quit.
Et effectivement lorsque je ferme ce processus dans le gestionnaire de tâches ton code fonctionne sans problème.
Autre test : si j'ouvre préalablement IE puis que je lance ton code il fonctionne plusieurs fois sans l'apparition du message d'erreur et lorsque je regarde dans le gestionnaire de tâches je ne trouve pas ce processus résiduel.
Ferme IE, lance ton code puis lance cette procédure. Lance à nouveau ton code pour voir ce que cela donne :
Chez moi cela tue le processus et ton code peut être relancé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Sub Kill_Internet_Explorer() Dim objWMIService As Object Dim colItems As Object Dim objItem As Object Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & "." & "\root\cimv2") Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'iexplore.exe'", , 48) For Each objItem In colItems objItem.Delete_ Next End Sub
Qu'en est-il de ton côté ?
A+
Oui David ton code fonctionne bien, c'était une de mes options, sinon avec un méchant TaskKill …
Ce qui est marrant c'est qu'en VBScript après l'instruction Quit IE11 finit bien par se fermer totalement après ~ 15s …
Patrick, c'est peut-être "normal" avec IE11 mais que ce soit sous Seven 64 bits comme sous Windows 8 64 bits
avec IE9 comme avec IE10 jamais je n'ai rencontré un tel comportement ‼
Et sans devoir attendre une quinzaine de secondes pour relancer un VBScript !
Pour contourner ce souci spécifique donc à IE11, activer On Error Resume Next avant d'affecter le CreateObject à une variable
puis si Err.Number < 0 buter IE puis affecter de nouveau le CreateObject à une variable sans oublier de la libérer à la fin …
Edit : comme IE11 m'a l'air plus lent, sur certains ordinateurs il pourrait être nécessaire d'augmenter la temporisation
avant de rendre visible IE, j'ai le cas depuis le passage à IE11 alors que le même ordinateur sous IE10 n'a jamais eu ce souci !
Pour conclure : vive IE8, IE9 & IE10 !
C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)
Cest normal ie 9 est en 32dans les deux dossier programme et passe par le syswow
Je pensait que vous l aviez deja remarqué
En direct de la buvette les orteil en eventail
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
MARC QUAND TU EXECUTE UN VBS C EST LA VERSION DE WINDOW (32/64) QUI S EXECUTE ET DONC ICI EN L OCCURENCE DANS LE CADRE D UNE INSTANCIATION DE IE CE SERA DONC LA 64 A L INVERSE DE OFFICE QUI LANCE LA 32c est pour cela que tu a d abors la 64 qui demarre et execute les commandes en 32 ce qui a pour consequence avec les gestion de perdre le focus des element voir du document la librairie n est pas equippée pour cette gestion d erreur et donc au cun plantage mais un code bloqué
Et ca ne va pas aller en s arrangeant vu que IE. RESTERZ UNE APPLICATION NON EVOLUTIVE
VU LA NAISSANCE DE EDGE
D ailleur on trouve de plus en plus des app IE SANS INStallateur basé sur IE9 REPONSE TrOUVER SUR MSDN
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
MAIS AUCUN SOUCI AVEC LES VERSIONS 64bits de IE9 & IE10 ‼
Car il ne s'agit pas d'un VBScript lancé via VBA mais d'un .vbs lancé manuellement via un raccourci du bureau !
Le même vbs ne pose aucun souci avec IE9 & IE10 sous Seven ou Windows 8 les deux en 64 bits …
C'EST SEULEMENT AVEC IE11 ‼
Et mon code VBA s'exécute bien avec IE11 au premier lancement …
C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)
re
oui il fait bien le premier mais après dans les taches tu verra une instance persistante car IE11 ne passe pas par le syswow c'est vraiment un 64 bit
c'est pour cela qu'il y a une version diminuée dans le (86) malheureusement le 64 passe la main au 32 du (86) lancé par office
seul problème une fois que la main est passé certaine commandes de la librairie déraillent parce que le document a été remplacé par le 32
en fait si tu regarde bien dans les taches l'instance persistante ne bouje plus en terme d octet si ton PC est bien installé normalement elle est même a zéro
cependant VBA le donneur d'ordre n'a pas capter ce changement lui attend la réponse avec les do/loop ect... et voila ou c'est ballo
par contre comme le 32 a pris le relais mais dans la même fenêtre certaines fonction de la librairie fonctionnent encore
c'est pour cela que sur certain pc selon les mises a jour etc.... des fois ca marche des fois non
exemple pour toi le ready 4 qui n'arrive jamais , en fait il est arrivé mais VBA ne peut plus le capter et donc interroge sans cesse IE et ralenti sévèrement la mise ajour graphique de la page si ce n'est la bloquer tout court
d'où aussi ton test sur l'object ou nothing dans divers exemple de tes discutions qui fonctionnent alors que le ready et en rade ou même a 3 voir moins
le soucis avec tes méthode de test object et nothing c'est que c'est assez model perso et donc pas universel
si tu lance un VBS a la main c'est normal que tu n'est pas de soucis c'est le wscript.exe(64) qui est lancé donc IE 64 et il y a pas transfert(sywow:32/64)
j'ai tout scrupter depuis des mois tu sais combien c'est un sujet qui me passionne et sur forum et question MSdN on a a des bribes de reponse il faut fouiller fouiller
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
Non Patrick, j'ai décrit exactement le contraire : même en lancement manuel,
le système met grand minimum 15 secondes pour fermer définitivement IE11 ! Et avant c'était quasi instantané !
Que ce soit IE9 ou IE10 sous Seven comme sous Windows 8 …
Qui plus est un vbs fonctionnant sans souci sur les versions antérieures plante sous IE11 …
Quant aux moyens de détecter si un objet est présent, y a pas vraiment le choix lorsque le statut de la page est à "complete"
et que les données ne sont toujours pas en place ! Exemple d'EuroNext ou d'autres sites envoyant des requêtes en JScript …
Donc soit tu tentes une temporisation longue pour éviter d'être en avance soit tu détectes l'objet afin d'être plus efficace ‼
Et c'est universel vu que cela marche un peu partout à travers le globe ! (je ne poste pas qu'ici et pas le seul à procéder ainsi …)
Détecter l'objet est aussi une méthode pour réduire sensiblement le temps d’exécution avec IE, surtout au sein d'une boucle ! …
Je l'utilise même pour des sites où le ReadyState passe bien à 4 mais mettant du temps à s'activer
à cause des pubs, des stats de Google ou autres joyeusetés dans le genre inutile !
Pourquoi attendre le chargement complet de la page si les éléments nécessaires sont déjà chargés trois secondes avant ?‼
C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)
re
chez moi la même code en vba ou vbs ne donne pas le même résultat
si je lance le vbs a la main impec!!!! et IE11 se ferme immédiatement a quelque millièmes prêt j'ai pas les moyen de vérifier
si je lance le vbs par VBA >>>>plante parfois mais ieexplorer.exe (syswow) reste même si la macro a fonctionné
si le même code en VBA est lancer >>>plante
W 7 premium 64 IE 11 office 2007
mes fichiers dans les contributions:
mail avec CDO en vba et mail avec CDO en vbs dans un HTA
survol des bouton dans userform
prendre un cliché d'un range
si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
et n'oublie pas de voter
En fait de mon côté la tâche IE11 se ferme instantanément mais en même temps un résiduel apparaît dans les processus
et s'il s'agit d'un appel via un vbs manuel ce résidu disparaît une bonne quinzaine de secondes après la fermeture
et est bloquant en cas de nécessité immédiate de relancer le vbs ou un autre ou encore un appel en VBA !
Et si l'appel est en VBA, ce résiduel ne disparait pas … Vive donc les versions précédentes !
Déjà il y a longtemps une malheureuse mise à jour de Windows Update m'avait collé un IE11 sous Seven,
elle a été virée en moins de 48 heures vu les ennuis remontés …
Depuis il y a dû y avoir une flopée de correctifs mais franchement, pour une simple fermeture, purée !
Alors que les versions antérieures n'avaient pas de souci … Déjà qu'après IE9 ils ont flingué la recherche par classe !
C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)
hello,
pour piloter un navigateur, je vous propose un outil gratuit (Licence Apache 2.0) : Selenium Automation
Selenium est un outil d'automatisation de navigateur web. Il permet donc d'écrire, de manière plus ou moins assistée, des scripts dont l'exécution réalisera automatiquement des actions dans un navigateur web : visiter une page, cliquer sur un lien, remplir un formulaire, etc. et de récupérer les résultats de ces actions.
Il existe des APIs clientes pour Java, C#, Ruby,Python mais aussi VB.Net, Visual Basic Applications and VBScript grâce à SeleniumBasic téléchargeable ici
Une fois installé vous disposez dans l'éditeur VBA d'une nouvelle bibliothèque dans les références : Selenium type Library
Si vous avez Firefox installé sur votre PC , une installation d'une extension (Selenium IDE) est proposée.
Enregistrement d'actions via Selenium IDE
La manière la plus simple de créer des scripts Selenium est de les enregistrer à la manière de macros, via l'outil Selenium IDE, un plugin pour Firefox qui permet d'enregistrer les actions que vous réalisez dans le navigateurs et de pouvoir les rejouer. Grâce au menu Fichier/Exporter le test sous ... vous pouver exporter votre script dans votre langage de programmation préféré dont VBA.
Exemple d'enregistrement de script pour le téléchargement des historiques de ABCBourse :
et voici le code VBA pour télécharger les historiques ABCBourse :
Et voilà , avec ce code je récupère le fichier de l'historique dans le répertoire f:\temp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 Public Sub AspirateurABC() 'J.P Juillet 2016 Dim By As New By, Assert As New Assert, Verify As New Verify, Waiter As New Waiter Dim driver As New WebDriver 'on change les paramètres de Firefox pour un téléchargement automatique 'des fichiers .txt Dim fxProfile As New FirefoxDriver driver.SetPreference "browser.download.folderList", 2 driver.SetPreference "browser.download.manager.showWhenStarting", False driver.SetPreference "browser.download.dir", "F:\temp" ' ne pas demander pour les fichiers .txt (pour les csv -> text/csv) driver.SetPreference "browser.helperApps.neverAsk.saveToDisk", "text/plain" driver.Start "firefox", "http://www.abcbourse.com/" driver.Get "/download/historiques.aspx" driver.FindElementById("ctl00_BodyABC_strDateDeb").Clear driver.FindElementById("ctl00_BodyABC_strDateDeb").SendKeys "26/05/2015" driver.FindElementById("ctl00_BodyABC_strDateFin").Clear driver.FindElementById("ctl00_BodyABC_strDateFin").SendKeys "26/05/2016" driver.FindElementById("ctl00_BodyABC_oneSico").Click driver.FindElementById("ctl00_BodyABC_txtOneSico").Clear driver.FindElementById("ctl00_BodyABC_txtOneSico").SendKeys "FR0000120222" driver.FindElementById("ctl00_BodyABC_Button1").Click 'tempo pour permettre le téléchargement 'on pourrait tester l'apparition du fichier téléchargé Application.Wait Now + TimeValue("0:00:10") driver.Quit End Sub
Vous remarquerez que j'ai changé quelques paramètres de Firefox pour télécharger sans ouverture de fenêtre les fichiers .txt
Sélénium peut commander aussi d'autres navigateurs comme Chrome, Opéra, I.E et fonctionne sous Windows, Linux , MAC.
Voici un autre exemple pour une copie d'écran de la page ABCBourse en utilisant cette fois-ci Chrome :
Je ne suis pas un spécialiste de cet outil mais il m'a paru intéressant de vous le présenter , car il me semble qu'il peut rendre la vie plus facile.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Public Sub CaptureABCBourse() Dim robot As New WebDriver robot.Start "Chrome", "http://www.abcbourse.com/download/historiques.aspx" ' test 1 prendre une copie d'écran robot.Get "/" robot.TakeScreenshot.SaveAs (ActiveWorkbook.Path + "/CopieEcran.png") robot.Quit End Sub
Ami calmant, J.P
Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko
@jurassic pork : j'ai téléchargé Selenium IDE 2.9.1 pour tester mais je n'arrive pas à le manipuler pour l'instant.
Concrètement une fois que la fenêtre de Selenium apparaît :
- quelles sont les étapes pas à pas pour enregistrer les actions réalisée dans le navigateurs ?
- comment les rejouer ?
Grâce au menu Fichier/Exporter le test sous ... vous pouver exporter votre script dans votre langage de programmation préféré dont VBA.
J'ai C#, Java, Pithon2, Ruby dans la liste des langages proposés mais pas VBA.
A+
Si c'est une nouvelle version de selenium VBA, j'espère qu'elle est moins limitée que l'ancienne …
Patrick l'avait testé et en était vite revenu !
En dehors de l'Enregistreur de scripts ouvrant la voie aux débutants,
le seul plus que je lui avais trouvé était son mode ghost, un navigateur invisible …
C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager