使用 Appium 和 Python 小部件单击事件的 Flutter 移动应用自动化无法在 flutter 对话框中执行

问题描述 投票:0回答:1

问题是: 我们无法在 flutter 移动应用程序中找到当前打开的对话框中的小部件,并且自动化流程无法继续。

但是在登录屏幕中我们可以找到电子邮件、密码等输入字段,并且可以在登录按钮上执行单击事件。

from appium import webdriver
import time
from appium_flutter_finder import FlutterFinder, FlutterElement

desired_cap = {
    "deviceName": "27151JEGR",
    "platformName": "Android",
    "platformVersion": "13",
    "automationName": "Flutter",
    "autoAcceptAlerts": "true",
    "app": "apk path"
}
server = "server IP"

print("launch app")
driver = webdriver.Remote(server, desired_cap)
print("app launched")
time.sleep(8)

FlutterElement(driver, FlutterFinder().by_value_key("userId")).click()
FlutterElement(driver, FlutterFinder().by_value_key("userId")).send_keys("email address")
time.sleep(1)

FlutterElement(driver, FlutterFinder().by_value_key("password")).click()
FlutterElement(driver, FlutterFinder().by_value_key("password")).send_keys("password text")
time.sleep(1)

FlutterElement(driver, FlutterFinder().by_value_key("login_button")).click()
print("tapped on login button")
time.sleep(10)

#Below line is to perform the click on Home button (Which is in the dialog) which is not working and testing controller gets stopped from here.
#We have tried by text, and key.
FlutterElement(driver, FlutterFinder().by_value_key("home_login_biometric")).click()
print("tapped on home button")
time.sleep(10)
python flutter appium
1个回答
0
投票

查看 appium-flutter-driver 文档

    driver.elementSendKeys(find.byType('TextField'), 'I can enter text') (no focus required)
    driver.elementClick(find.byType('TextField'));
    driver.execute('flutter:enterText', 'I can enter text') (focus required by tap/click first)
© www.soinside.com 2019 - 2024. All rights reserved.