Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

agir sur une page html

13 réponses
Avatar
Lotre
Bonjour,

Situation :
Une machine est contrôlée via un interface web
Pour faire une tâche, la seule solution est de cliquer sur un bouton
située sur une page html

Je connais l'adresse de la page et le nom du bouton sur cette page...

J'aimerais automatiser la tâche ...
( ...pour la planifier)

Ouvrir la page est facile
( avec la méthode navigate de l'objet IE)
mais ...
Est-il raisonnable d'espérer faire un script
qui, en plus, envoie l'évènement "clic sur le bouton"
sur cette page...

Merci d'avance,

HB

10 réponses

1 2
Avatar
Michel__D
Bonjour,

Lotre a écrit :
Bonjour,

Situation :
Une machine est contrôlée via un interface web
Pour faire une tâche, la seule solution est de cliquer sur un bouton
située sur une page html

Je connais l'adresse de la page et le nom du bouton sur cette page...

J'aimerais automatiser la tâche ...
( ...pour la planifier)

Ouvrir la page est facile
( avec la méthode navigate de l'objet IE)
mais ...
Est-il raisonnable d'espérer faire un script
qui, en plus, envoie l'évènement "clic sur le bouton"
sur cette page...

Merci d'avance,



Tout dépend de la page web, mais sur une page simple (en VBS) :

Dim oIE, sURL
' Création de l'objet IE
Set oIE=CreateObject("InternetExplorer.Application")
' Chargement de la page web
sURL = "LaPage.htm"
oIE.navigate sURL:oIE.Visible=True
' Si le bouton est nommé et dans un FORM nommé
If TypeName(oIE.Document.Forms("NameFORM").Elements("NameINPUT_BUTTON"))<>"Nothing" then
oIE.Document.Forms("NameFORM").Elements("NameINPUT_BUTTON").Click()
End If
Avatar
Méta-MCI \(MVP\)
Bonjour !

Perso, je serais passé par un document.getElementById("IDDUBOUTON")
Mais, le principe général resterait très proche.
-
@-salutations
--
Michel Claveau
Avatar
Lotre
bonsoir,

Je n'espérais pas que l'on puisse faire

oIE.Document.Forms("NomForm").Elements("NomBouton").Click()

Je vais tester ça quand j'irais sur le site ( Mercredi matin)

HB
Avatar
Lotre
bonjour,

Suite de l'aventure :


En fait, il y a des fenètres qui s'ouvrent avant d'arriver à la page
1. Alerte de sécurité il faut accepter le certificat ...
( la machine jointe tourne sous une vieille distrib linux ...)

2. Connexion à la machine ( login + mot de passe + entrée)

En suite on peut arriver à la bonne page directement avec
objet_ie.navigate

Le formulaire n'est pas nommé et c'est du php...

Je me sers donc de
Objet_WsShell.AppActivate
et
Objet_WsShell.SendKeys
(des caractères + des "{TAB}" + des "~"

En mode "normal" le script fonctionne parfaitement .

La page s'ouvre, les "OK" se suivent jusqu'au dernier click
qui est en fait un "Entrée" sur un bouton "focused"
et la tâche se fait ... ....

- navigate <url1>
- accepter certificat
- identification
- navigate <page visée>
- lancer l'action choisie

c'est farpait mais ....

Mais... il y a un "mais"
Ce n'est pas ainsi que ce script doit servir :

Avec :
- session admin vérrouillée
- une tâche planifiée lance le script...

ça bloque dès la première fenètre :

Do while not Objet_WsShell.AppActivate "Le titre"
Wscript.Sleep 200
loop

reste en plan .....

Une idée ???

HB




identification
Lotre wrote:
bonsoir,

Je n'espérais pas que l'on puisse faire

oIE.Document.Forms("NomForm").Elements("NomBouton").Click()

Je vais tester ça quand j'irais sur le site ( Mercredi matin)

HB


Avatar
jbongran
"Lotre" a écrit dans le message de
news:%
bonjour,

Suite de l'aventure :


En fait, il y a des fenètres qui s'ouvrent avant d'arriver à la page
1. Alerte de sécurité il faut accepter le certificat ...
( la machine jointe tourne sous une vieille distrib linux ...)

2. Connexion à la machine ( login + mot de passe + entrée)

En suite on peut arriver à la bonne page directement avec
objet_ie.navigate

Le formulaire n'est pas nommé et c'est du php...

Je me sers donc de
Objet_WsShell.AppActivate
et
Objet_WsShell.SendKeys
(des caractères + des "{TAB}" + des "~"

En mode "normal" le script fonctionne parfaitement .

La page s'ouvre, les "OK" se suivent jusqu'au dernier click
qui est en fait un "Entrée" sur un bouton "focused"
et la tâche se fait ... ....

- navigate <url1>
- accepter certificat
- identification
- navigate <page visée>
- lancer l'action choisie

c'est farpait mais ....

Mais... il y a un "mais"
Ce n'est pas ainsi que ce script doit servir :

Avec :
- session admin vérrouillée
- une tâche planifiée lance le script...

ça bloque dès la première fenètre :

Do while not Objet_WsShell.AppActivate "Le titre"
Wscript.Sleep 200
loop

reste en plan .....

Une idée ???

HB




identification
Lotre wrote:
bonsoir,

Je n'espérais pas que l'on puisse faire

oIE.Document.Forms("NomForm").Elements("NomBouton").Click()

Je vais tester ça quand j'irais sur le site ( Mercredi matin)

HB







TinyGet, outil en ligne de commande du ressource kit de IIS peut
(certainement) faire cela
http://support.microsoft.com/kb/840671/fr#12

L'usage de wcat, avec son enregistreur de navigation (sorte de proxy local
qui logue tout ce que le client envoi au serveur) peut être utile afin de
déterminer les paramètres requis pour le formulaire.
Déjà mis un tel système en production avec tinyget mais sans certificat.

Sinon, il existe aussi le classique wfetch, natif sous Li..ux mais porté
sous Windows
Avatar
Lognoul Marc [MVP]
> Sinon, il existe aussi le classique wfetch, natif sous Li..ux mais porté
sous Windows


wfetch ou wget?

Marc


__________ Information from ESET NOD32 Antivirus, version of virus signature database 3961 (20090325) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com
Avatar
Michel__D
Bonjour,

Lotre a écrit :
bonjour,

Suite de l'aventure :


En fait, il y a des fenètres qui s'ouvrent avant d'arriver à la page
1. Alerte de sécurité il faut accepter le certificat ...



A chaque fois que tu ouvre cette même page ?

( la machine jointe tourne sous une vieille distrib linux ...)


>
2. Connexion à la machine ( login + mot de passe + entrée)



Faut voir le code html afin d'agir sur les objets/éléments de la page.

En suite on peut arriver à la bonne page directement avec objet_ie.navigate

Le formulaire n'est pas nommé et c'est du php...



Il suffit que objets/éléments soient accessiblent.

Je me sers donc de
Objet_WsShell.AppActivate
et
Objet_WsShell.SendKeys
(des caractères + des "{TAB}" + des "~"

En mode "normal" le script fonctionne parfaitement .

La page s'ouvre, les "OK" se suivent jusqu'au dernier click
qui est en fait un "Entrée" sur un bouton "focused"
et la tâche se fait ... ....

- navigate <url1>
- accepter certificat
- identification
- navigate <page visée>
- lancer l'action choisie

c'est farpait mais ....

Mais... il y a un "mais"
Ce n'est pas ainsi que ce script doit servir :

Avec :
- session admin vérrouillée
- une tâche planifiée lance le script...

ça bloque dès la première fenètre :

Do while not Objet_WsShell.AppActivate "Le titre"
Wscript.Sleep 200
loop

reste en plan .....

Une idée ???



Il me semble que la méthode SendKeys n'agit que sur la fenêtre active
et lorsque la station est verrouillée ce n'est plus ta fenêtre qui
est active c'est pour cela qu'il faudrait plutot agir sur les objets.
Avatar
Lotre
bonsoir ,

et merci de prendre la peine de m'aider.

Michel__D wrote:

En fait, il y a des fenètres qui s'ouvrent avant d'arriver à la
page
1. Alerte de sécurité il faut accepter le certificat ...



A chaque fois que tu ouvre cette même page ?



Oui il s'agit d'une fenètre "Alerte de sécurité"
et il est question d'un certificat invalide ce qui est inévitable :
La machine à piloter ainsi tourne avec une antique distribution linux
donc ... les certificats reconnus par W2003 ... pas trop ...

Je ne sais pas si l'on peut "dire à IE" d'accepter
la connexion à cette page une fois pour toutes ...

2. Connexion à la machine ( login + mot de passe + entrée)



Faut voir le code html afin d'agir sur les objets/éléments de la
page.



Il s'agit d'une authentification dans une petite fenètre nommée :
"connexion à <ip_de_la_machine>"
Je ne pense pas que l'on puisse agir sur la page html (php)
directement. Il s'agit d'une connexion en https.
Je regarderais de plus près mais cela ressemble plus à une boite de
dialogue windows
qu'à une fenêtre fille affichée en html par IE...
Je peux enregistrer le mot de passe ; ce qui limite le travail...
mais il faut quand même envoyer "Entrée" sur le bon bouton ...

En suite on peut arriver à la bonne page directement avec
objet_ie.navigate Le formulaire n'est pas nommé et c'est du php...



Il suffit que objets/éléments soient accessibles.



sans noms je ne vois pas comment
.... mais .... si je demande des conseils
c'est bien j'ai conscience de mes vastes lacunes ;o)

Il me semble que la méthode SendKeys n'agit que sur la fenêtre
active
et lorsque la station est verrouillée ce n'est plus ta fenêtre qui
est active c'est pour cela qu'il faudrait plutot agir sur les
objets.



Je m'en suis douté ...
Une autre solution serait peut-être de déverrouiller la session
puis de la re-verrouiller à la fin

mais, cà non plus je ne sais pas faire ;o(((

HB
Avatar
Gilles LAURENT [MVP]
"Lotre" a écrit dans le message de
news:
| bonsoir ,

Bonsoir,

| et merci de prendre la peine de m'aider.

Avez-vous étudié les propositions évoquées par jbongran ? Je ne connais
pas grand chose à ce domaine mais après lecture attentive de l'article
du support Microsoft cité dans son Post, je pense que les pistes sont
très prometteuses ... Pour rappel :
Les outils du Kit de ressources IIS 6.0
http://support.microsoft.com/kb/840671/fr#12

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Avatar
Lotre
bonsoir,


Gilles LAURENT [MVP] wrote:

Avez-vous étudié les propositions évoquées par jbongran ? Je ne
connais pas grand chose à ce domaine mais après lecture attentive de
l'article du support Microsoft cité dans son Post, je pense que les
pistes sont très prometteuses ... Pour rappel :
Les outils du Kit de ressources IIS 6.0
http://support.microsoft.com/kb/840671/fr#12



je verrais ça demain (si j'ai le temps...) car je suis chez moi ;o)
J' installerais le reskit IIS sur le serveur (2003) qui doit contacter
la machine linux en https ...

donc je ne peux pas encore savoir si cela va me servir

Ceci étant, j'ai l'impression que ces outils sont faits pour les
relations client/serveur
en http avec IIS sur une machine MS (ce qui serait logique)
Or, là c'est pas franchement le cas
Et j'ai bien peur que le pb des deux premières boites de dialogue
"Alerte de sécurité" puis "connexion à <ip>" reste entier.

HB
1 2