" IEGetObjById " ; Id variant comment faire?

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Baldwinos
Niveau 1
Niveau 1
Messages : 4
Enregistré le : mar. 19 sept. 2017 18:16
Status : Hors ligne

" IEGetObjById " ; Id variant comment faire?

#1

Message par Baldwinos »

Bonsoir à tous,

Je suis novice sur AutoId, je me familiarise gentiment avec celui-ci.

Je suis en train de développer un programme pour automatiser des fonctions sur le net, mais je bloque sur quelque chose.
Jusqu'à maintenant j'utilisais la fonction " _IEGetObjById " mais voilà je bloque avec un bouton qui a un script java, et du coup le Id est variant à chaque connexion.

Comment contournez ce problème?

Merci à vous,
Baldwinos.
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: " IEGetObjById " ; Id variant comment faire?

#2

Message par walkson »

Bonjour,
Difficile de vous répondre sans avoir le code de la page !
Il existe plusieurs méthodes: par collection, par Id, par Name ou encore par la valeur du button
Un exemple qui utilise plusieurs méthodes

#include <IE.au3>
#include <MsgBoxConstants.au3>

Local $oIE = _IECreate("https://candidat.pole-emploi.fr/candidat/espacepersonnel/authentification")
Local $oInputs = _IETagNameGetCollection($oIE, "input")
Local $sTxt = ""
Local $aa ,$bb, $cc, $dd

For $oInput In $oInputs
   $sTxt &= $oInput.type & @CRLF
   $aa &= $oInput.value & @CRLF
   If $oInput.value = "Poursuivre" Then $bb = $oInput.id
   If $oInput.value = "Poursuivre" Then $dd = $oInput.name
Next
MsgBox($MB_SYSTEMMODAL, "Input Type", " Types :" & @CRLF & $sTxt)
MsgBox(0,"toutes valeurs",$aa)
MsgBox(0,"id",$bb)
$cc = _IEGetObjById($oIE,$bb)
MsgBox(0,"id.value", $cc.value)

$cc = _IEGetObjByName($oIE,$dd)
MsgBox(0,"name.value 1",@extended &">>"& $cc.value)

$cc = _IEGetObjByName($oIE,"boutonContinuer");méthode directe (et simple)
MsgBox(0,"name.value 2",@extended &">>"& $cc.value)
_IEQuit($oIE)
 
Selon le site _IETagNameGetCollection($oIE, "input") pourait être _IETagNameGetCollection($oIE, "button")
Il faut regarder le code de la page et tester :wink:
En espérant vous avoir été utile
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Baldwinos
Niveau 1
Niveau 1
Messages : 4
Enregistré le : mar. 19 sept. 2017 18:16
Status : Hors ligne

Re: " IEGetObjById " ; Id variant comment faire?

#3

Message par Baldwinos »

Tout d'abord merci de votre réponse.

Je ne savais pas si, légalement, je pouvais copier un extrait du code de la page.
Voici l'extrait du bouton en question. Excusez moi d'avance si je n'ai pas le droit de le faire, je le supprimerais de suite.

Code : Tout sélectionner

<button  type="submit" value="Valider" id="button59c422d7df91f" class="green ">
	<div class="button-container addHoverClick">
		<div class="button-background">
			<div class="buttonStart">
				<div class="buttonEnd">
					<div class="buttonMiddle"></div>
				</div>
			</div>
		</div>
		<div class="button-content">Valider</div>
	</div>
</button>
<script type="text/javascript" id="button59c422d7df91f_script">
	window.addEvent('domready', function() {
        if($('button59c422d7df91f')) {
            $('button59c422d7df91f').addEvent('click', function () {
                window.fireEvent('buttonClicked', [this, {"type":"submit","value":"Valider","name":"","id":"button59c422d7df91f","class":"green ","title":"","confirm":"","onclick":""}]);
            });
        }
	});
</script>
En attendant un retour de votre part, je vais plancher sur les conseils que vous m'avez donné.
Baldwinos
Niveau 1
Niveau 1
Messages : 4
Enregistré le : mar. 19 sept. 2017 18:16
Status : Hors ligne

Re: " IEGetObjById " ; Id variant comment faire?

#4

Message par Baldwinos »

A défaut de passer pour un véritable débutant en la matière.. Je sèche un peu la !

Ne serait est ce pas plus simple de rentrer une ligne de code pour retrouver la collection en l’occurrence < Button > et sa valeur < Valider > ?

Code : Tout sélectionner

Local $oIE = _IEcreate("www.example.net")
Local $oInputs = _IETagNameGetCollection($oIE, "button")
Local $sTxt = ""
For $oInput In $oInputs
    $sTxt &= $oInput.type & @CRLF
Next
MsgBox($MB_SYSTEMMODAL, "Form Input Type", "Form: " & $oInput.form.name & @CRLF & @CRLF & "         Types :" & @CRLF & $sTxt)
Comment définir la valeur du button?
Et deuxièmement, je ne comprend pas la ligne de code MsgBox. Que dois-je mettre dans " Form Input Type " et " Form: " ?
Baldwinos
Niveau 1
Niveau 1
Messages : 4
Enregistré le : mar. 19 sept. 2017 18:16
Status : Hors ligne

Re: " IEGetObjById " ; Id variant comment faire?

#5

Message par Baldwinos »

J'ai enfin trouvé la solution :wink:

Code : Tout sélectionner

$oCorrectObj = ""

$tags = $oIE.document.GetElementsByTagName("button")
For $tag in $tags
$class_value = $tag.GetAttribute("class")
If string($class_value) = "blue" Then
    $oCorrectObj = $tag
Le seul hic, il y a plusieurs bouton avec ces références.
Comment sélection celui d'une <div class> précise?
Répondre