python - Pywinauto:找不到 click() 方法

标签 python pycharm automated-tests pywinauto

我正在开始一个在 PyCharm 上使用 Pywinauto 的项目。这是我的项目结构:

mybeautifulproject
    utils
        Utils
    pages
        LoginPage
    tests
        MyTest

这是我的 Utils 文件:

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文件:

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:

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 时,应用程序打开,字段已正确填写,但随后出现错误:

AttributeError: Neither GUI element (wrapper) nor wrapper method 'click' were found (typo?)

不知道为什么按钮无法点击。我知道它已找到,因为当我输入错误的标识符时,会出现错误,明确指出无法找到该对象。

我错过了什么?

谢谢。

最佳答案

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

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

print(dir(self.BTN_VALIDER.wrapper_object()))

关于python - Pywinauto:找不到 click() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53843002/

相关文章:

testing - TestCafe:如何将页面上的按钮组件设置为单击但未释放的按下状态?

testing - 测试 Controller 上的 TFS 2010 测试代理注册

testing - 软件测试建议?

python - 计算每个id上周的平均访问次数而不循环

Python 日志记录 - 当前安装的记录器/处理程序的概述

python - 使用 ngrok url 作为 facebook webhook 的回调 url,但被识别为 "not whitelisted"

git - 如何在 Pycharm 中完全重置 github 存储库?

python - 想要使用 makeaxes 在 matplotlib 中用 1 个颜色条绘制 3 个图

python - 避免在 scikit learn StandardScaler 中缩放二进制列

python-2.7 - 未配置访问。 Gmail API 之前没有在项目********* 中使用或被禁用。 (Python,Gmail API)