问题是: 我们无法在 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)
查看 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)