Je suis en train d'écrire un script en utilisant pywinauto pour ouvrir un référentiel dans Informatica gestionnaire de flux de PowerCenter (de v9.6.1)Pourquoi un clic droit envoyé par pywinauto ne change-t-il pas l'état du bouton de connexion grisé dans informatica, mais un vrai clic de souris le fait?
Après les lignes ci-dessous sont exécutées, je reçois le menu contextuel avec l'option de connexion comme dans la capture d'écran. Notez également que le bouton "connecter" de la barre d'outils reste grisé. Si j'utilise la souris actuelle et que je clique sur l'élément treeview pour le référentiel auquel je veux me connecter, le bouton de connexion devient vert et activé. Mais pas quand pywinauto envoie le bon clic.
from pywinauto.application import Application
from pywinauto.keyboard import SendKeys
import time
app = Application().Start(cmd_line=r'C:\PowerCenterClient\client\bin\pmwflmgr.exe')
informaticaworkflowmanager = app[u'Informatica::WorkflowManager']
informaticaworkflowmanager.Wait('ready')
time.sleep(2)
systreeview = informaticaworkflowmanager[u'TreeView']
tree_item = systreeview.GetItem([u'Repositories', u'REP'])
tree_item.Select()
tree_item.Click(button='right',double=True,where='icon')
J'ai essayé d'utiliser SendKeys pour envoyer 'c' suivi par {} ENTRER et il retourne juste sans rien faire. Aussi, si j'utilise le clavier réel sur le menu contextuel de clic droit généré après les étapes de pywinauto ci-dessus, il sélectionne le menu de connexion quand j'appuie sur c, mais il ne fait rien quand j'appuie sur Entrée. Je pense en quelque sorte que la fonction de connexion n'est pas activée. Je suis désemparé si toute autre entrée est requise par l'application pour l'activer. J'ai également essayé d'utiliser l'option informaticaworkflowmanager.MenuItem(u'&Repository->&Connect...')
mais en vain, elle dit qu'elle est désactivée.
Tous les pointeurs pour aider pywinauto à ouvrir un référentiel sont les bienvenus!
Essayez d'abord d'exécuter le script en tant qu'administrateur. Si cela ne vous aide pas, utilisez la méthode click_input(). Il fonctionne réellement comme un utilisateur. La méthode click() envoie WM_CLICK ou BM_CLICK qui n'est probablement pas géré par l'application en état de bouton grisé. –
@VasilyRyabov merci! le click_input() a fonctionné. Vous pouvez ajouter une réponse si vous le souhaitez. Merci aussi de m'avoir présenté à l'ensemble de l'automatisation GUI, ces derniers jours je lisais sur des frameworks similaires (sikuli etc.) c'est comme ouvrir un tout nouveau monde de productivité. Je ne peux pas croire que personne n'en parle plus souvent! – dbza
@VasilyRyabov Je suis coincé à un autre problème maintenant, il a probablement besoin des droits d'administrateur. Comment exécuter l'application(). Start() en tant qu'administrateur? – dbza