Page 1 sur 1

[R] Cliquer sur un endroit précis

Posté : jeu. 19 oct. 2017 12:09
par Shenazen
Mesdames, Messieurs,

Je vous écrit aujourd'hui car j'ai un énorme soucis. Je n'arrive pas à faire mes clics là où je le veux. Je m'explique donc :

MouseClick ("Left", coordonnées x, coordonnées y)

Mais ce n'est pas ça que je veux, car je suis en BTS de développement donc j'utilise plusieurs écrans et à chaque fois, la compatibilité n'est plus bonne du tout. Donc ce que je voudrais savoir, c'est comment est-ce qu'on peut lui dire : Sur cette page, si il y a ce texte, (ou ce lien...) clique dessus.

Ce, vous l'aurez compris, afin de maximiser carrément les compatibilités. Car ça fait des jours que je cherche sur internet mais rien pour me renseigner, je demande à d'autres personnes qui me parle de capture d'écran, je bidouille le code pour tester tout et rien...

Je vous remercie d'avance pour votre aide, j'espère avoir été assez clair dans ma demande, et si j'ai oublié quelque chose, n'hésitez pas à me le dire.

Je vous remercie beaucoup d'avance.

Cordialement.

Re: Cliquer sur un endroit précis

Posté : jeu. 19 oct. 2017 12:22
par orax
Bienvenue sur le forum.
Il est généralement préférable d'utiliser ControlClick à la place de MouseClick.
S'il s'agit de cliquer sur des liens dans une page web, il est possible d'automatiser le navigateur. Pour automatiser Internet Explorer, il existe l'UDF IE.au3 ; les fonctions commencent par _IE, comme _IECreate, par exemple.

Re: Cliquer sur un endroit précis

Posté : jeu. 19 oct. 2017 12:25
par Shenazen
D'accord, je vais essayer cet UDF dès mon retour au bureau et je vous dirai ça. Mais si c'est pour un fichier Excel ou PowerPoint ? Je peux faire comment ? Et c'est quoi cette histoire d'utiliser un ScreenShot ?

Re: Cliquer sur un endroit précis

Posté : jeu. 19 oct. 2017 13:55
par TomAijerrie
C'est toi qui nous as parlé d'utiliser une capture d'écran. Nous n’avons pas vu les messages des personnes qui te demandent de faire ça, donc on ne peut pas t'aider. Peut être qu'ils t'ont demandé de leur envoyer un screen de tes écrans pour qu'ils puissent vérifier que tu n'as pas utilisé de mauvaise coordonnées.

Pour les fichiers Excel, il existe un UDF présent par défaut dans AutoIt https://www.autoitscript.com/wiki/Excel_UDF

Re: Cliquer sur un endroit précis

Posté : jeu. 19 oct. 2017 14:01
par Shenazen
Certes, je vous en ai parlé car quand j'ai demandé à mon patron et un de mes professeurs (Car je suis en alternance), ils m'ont tous les deux parler que ça fonctionnait par ScreenShot (Je crois que c'est le terme même qu'ils ont employé). Sachant que ces deux personnes étaient avec moi physiquement, il est donc normal que vous n'ayez pas vu leur post :lol: Et également, je leur ai montré donc ils m'ont pas dit de leur envoyer de capture.

Pour l'UDF IE, je suis encore en train de chercher car je n'arrive pas à le faire fonctionner correctement... Et merci pour la réponse pour Excel, ce lien je l'ai déjà consulté et ne m'a pas été d'une très grande aide, mais je vous remercie pour vos réponses. En espérant avoir d'autres réponses d'aide, cela m'apporterait énormément :D


Voilà par exemple le code que j'ai fait pour vous montrer un de mes soucis, il ne veut pas aller cliquer sur le lien que je lui ai demandé :

Code : Tout sélectionner

#include <IE.au3>

$oIE = _IECreate("http://google.fr")
WinActivate("Google")
Sleep(3000)
Send("Chat")
Send("{ENTER}")
Sleep(2000)
Local $oSubmit = _IEGetObjByName($oIE, "Images")
_IEAction($oSubmit, "click")
_IELoadWait($oIE)
Je vous remercie par avance :wink:

Re: Cliquer sur un endroit précis

Posté : jeu. 19 oct. 2017 14:18
par orax
Pour arriver à mieux comprendre et pour trouver une solution adaptée, peut-on savoir quel est le but du script ? Automatiser des tâches ? Tester si une application est bien fonctionnelle ? Autre chose ?

Re: Cliquer sur un endroit précis

Posté : jeu. 19 oct. 2017 14:25
par Shenazen
Pardon, entre-temps j'ai édité mon message au dessus.

Je cherche à cliquer sur le lien avec une demande autre que ControlClick ou MouseClick.

J'essai d'être le plus clair possible car je ne peux pas dire exactement le comment du pourquoi car c'est pour l'entreprise qui m'a demandé cette tâche et je ne peux rien dévoiler. Mais en gros c'est ça :wink: Voir même, je cherche à faire en sorte, que sur une page, il y a tel texte ou telle image, et je veux aller cliquer dessus par ce biais. Je vais essayer de trouver un exemple et je vous l'envoi :wink:

Re: Cliquer sur un endroit précis

Posté : jeu. 19 oct. 2017 14:51
par orax
J'ai supprimé l'image qui montre le code. On peut ajouter du code directement dans le message. Comme ça :

Code : Tout sélectionner

#include <IE.au3>

$oIE = _IECreate("http://google.fr")
_IELinkClickByText ($oIE, "Images")
_IELoadWait($oIE)

Re: Cliquer sur un endroit précis

Posté : jeu. 19 oct. 2017 15:01
par Shenazen
Ah ouais, c'est carrément mieux pour afficher le code! :lol:

Par contre, le code que tu m'as donné, fonctionne très bien sur google mais... Pas sur le site. J'ai juste remplacé l'acé l'adresse "Google.fr" par le site, puis le mot "Images" par le mot "Demandes" que j'ai sur le site sur lequel je veux appuyer. Mais là, ça ne fonctionne plus...

Il m'affiche ceci :
IE.au3 T3.0-2 Error from function _IELoadWait, $_IESTATUS_InvalidObjectType ()

Re: Cliquer sur un endroit précis

Posté : jeu. 19 oct. 2017 15:06
par Shenazen
Voici en faites sur quoi je travaille :

Je veux faire cliquer sur le lien "demandes" en haut. Et à chaque fois, je change d'écran, donc je ne peux pas me permettre de le faire avec des coordonnées...
demandes.png

Re: Cliquer sur un endroit précis

Posté : ven. 20 oct. 2017 11:32
par Shenazen
Bien le bonjour,

Grâce à des recherches bien compliquées, et le fait que ça fait un mois que je cherche, je suis venu sur ce forum hier pour poser mon problème. N'ayant eu aucune réponse pouvant régler mon problème parfaitement, je ne sais pas comment, mais j'ai réussi à faire ce que je voulais enfin.

Je vais mettre le petit [R] sur le titre pour résolu, mais avant, voici la solution :

L'histoire de la capture d'écran est en faites réellement ce qu'il fallait.
Vous faites une capture d'écran de la zone que vous souhaitez cibler. Vous l'enregistrez au format .bmp en 24bits. Ensuite, il vous faut un fichier _imagesearch.zip que vous trouverez ICI.

Vous suivez donc les indications de ce lien que je vous ai donné. Par la suite, il ne vous reste plus qu'à désigné votre image en .bmp et pour cliquer dessus par exemple, vous faites :

Code : Tout sélectionner

MouseClick (ou ControlClick) ("Bouton", $x1, $y1, 1, 10)
Ou comme moi vous pouvez déplacer un peu la souris sur l'image pour être sûr que ça clique bien dessus :

Code : Tout sélectionner

MouseClick ("Left", $x1 + 10 , $y1 + 10, 1, 10)
.


Voilà, et pour finir, pensez surtout, quand vous aurez télécharger le fichier, à ouvrir le script ImageSearch.zip et à mettre un espace avant chaque "byref" sinon ça ne fonctionnera pas.


Voici donc au final, la partie de code que je cherchais désespérément :

Code : Tout sélectionner

Func _imgdemandes()
	$x1=0
	$y1=0
	$demandes = "C:\Users\I15276\Desktop\Test\Projet Robot\Images\Demandes.bmp"

    $result = _ImageSearch($demandes,0,$x1,$y1,0)
    If $result=1 Then
		MouseMove ($x1 + 10, $y1 + 10, 10)
		MouseClick ("Left", $x1 + 10 , $y1 + 10, 1, 10)
	EndIf
EndFunc
Puis suite à ça, plus qu'à intégrer la fonction dans votre code source là où vous en avez besoin. Je tient à remercier les personnes qui ont tentés de m'aider, c'était super sympa, et je n'hésiterai pas à revenir régulièrement.

Merci à tous et bonne journée.

Re: [R] Cliquer sur un endroit précis

Posté : ven. 20 oct. 2017 13:37
par orax
Merci de partager la solution.
Je pense qu'il aurait quand même été possible de faire autrement, mais si ça marche comme ça, tant mieux ! :) Je préfère utiliser ce type de solution qu'en dernier recours. Il y a un logiciel, Sikuli, qui permet de faire quelque chose de semblable. Je ne l'utilise pas, je ne le connais que de nom. https://alternativeto.net/software/sikuli/