首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pywinauto:未找到click()方法

Pywinauto:未找到click()方法
EN

Stack Overflow用户
提问于 2018-12-19 08:28:28
回答 1查看 3K关注 0票数 2

我开始了一个在PyCharm上使用Pywinauto的项目。下面是我的项目结构:

代码语言:javascript
复制
mybeautifulproject
    utils
        Utils
    pages
        LoginPage
    tests
        MyTest

这是我的Utils文件:

代码语言:javascript
复制
from __future__ import print_function
import logging
from pywinauto import actionlogger
from pywinauto import Application

import argparse

class Test:
    app = Application(backend='uia')

    def __init__(self):
        parser = argparse.ArgumentParser()
        parser.add_argument("--log", help="enable logging", type=str, required=False)
        args = parser.parse_args()

        actionlogger.enable()
        logger = logging.getLogger('pywinauto')
        if args.log:
            logger.handlers[0] = logging.FileHandler(args.log)

        self.app = Application(backend='uia').start(r'mybeautifulapp.EXE')

所以基本上这个文件将一直被使用(在测试期间使用self.app作为被测试的应用程序)。

我的MyTest文件:

代码语言:javascript
复制
from __future__ import print_function
from utils import Utils
from pages import LoginPage

test = Utils.Test()

class MyTest:
    loginPage= LoginPage.LoginPage(test)
    loginPage.connexion("login", "password")

最后一个是LoginPage

代码语言:javascript
复制
from __future__ import print_function

class LoginPage:

    def __init__(self, test):
        self.FENETRE_AUTHENTIFICATION = test.app.window(auto_id='UserAuthentication')
        self.INPUT_NOM = self.FENETRE_AUTHENTIFICATION.child_window(auto_id="tbLogin")
        self.INPUT_MOT_DE_PASSE = self.FENETRE_AUTHENTIFICATION.child_window(auto_id="tbPassword")
        self.BTN_VALIDER = self.FENETRE_AUTHENTIFICATION.child_window(title="Mot de Passe", found_index=0)

    def connexion(self, login, password):
        self.INPUT_NOM.set_text(login)
        self.INPUT_MOT_DE_PASSE.set_text(password)
        self.BTN_VALIDER.click()

当我启动MyTest时,应用程序打开,字段被正确填写,但随后我收到错误消息:

代码语言:javascript
复制
AttributeError: Neither GUI element (wrapper) nor wrapper method 'click' were found (typo?)

我不知道为什么这个按钮不能被点击。我知道它被找到了,因为,当我放了一个错误的标识符时,就会有一个错误,明确地说这个对象找不到。

我遗漏了什么?

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-19 16:56:32

如果按钮未被识别为ButtonWrapper,则正确的方法是.invoke().select().toggle(),具体取决于按钮类型。

要检查它是如何被识别的,请使用self.BTN_VALIDER.wrapper_object()进行调试。此外,内置的Python函数dir()可以帮助您列出返回的包装器对象的所有可用属性。示例:

代码语言:javascript
复制
print(dir(self.BTN_VALIDER.wrapper_object()))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53843002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档