def findCalculatorTitleByAccessibilityId(session: webdriver.Remote): try: element = session.find_element_by_accessibility_id('AppName') print('found by AppName') except: element = session.find_element_by_accessibility_id('AppNameTitle') print('found by AppNameTitle') return element
from time import sleep from appium.webdriver import Remote caps = {'platformName': 'Android', # 操作系统 'platformVersion': 5.1, # 版本 'deviceName': 'Android Emulator', 'appActivity':'com.hkq.ctrl.app.ui.login.SplashActivity', # 入口 'appPackage': 'com.hkq.ctrl.app', # 包名 'app':r'C:\freshingair1.2.5.apk', # 文件路径 'automationName':'UiAutomator2', 'noReset': False} # 重置 driver = Remote(desired_capabilities=caps) sleep(10) # android_uiautomator文本元素定位 # driver.find_element_by_android_uiautomator('new UiSelector().text("手机号")').send_keys("freshingair") driver.find_element_by_accessibility_id("com.hkq.ctrl.app:id/et_login_userName").send_keys("freshingair") # android_uiautomator元素id定位 ele=driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.hkq.ctrl.app:id/et_login_pwd")') ele.send_keys("123456") # driver.find_element_by_android_uiautomator('new UiSelector().text("登录")') # tap点击 # driver.find_element_by_class_name("android.widget.Button") driver.tap([(442,548)],300)
def dismissAlarmDialogIfThere(session: webdriver.Remote): try: session.find_element_by_accessibility_id('SecondaryButton').click() except Exception as e: # dismiss only if found pass
"platformName": "Android", # 校验系统版本 # "platformVersion":"8.0", "automationName": "Uiautomator2", "deviceName": "emulator-5554", #"app":r"E:\zengcong\software\appium\Future-release-2018.apk", "appPackage": "com.lemon.lemonban", "appActivity": "com.lemon.lemonban.activity.WelcomeActivity", # 重启设置,会使用缓存数据 "noReset": True } # 创建一个会话 driver = Remote(command_executor='http://127.0.0.1:4723/wd/hub', desired_capabilities=caps) # 等待 driver.implicitly_wait(10) # 查找元素 driver.find_element('id') driver.find_element('xpath') # 这是通过安卓原生的定位方式,我们需要写Java 语言,没有提示 # 坑:Java语言当中的字符串是使用 双引号,不能使用单引号 # 优势:原生的, locator = 'new UiSelector().resourceId("com.lemon.lemonban:id/navigation_my").checkable(false)' driver.find_element_by_android_uiautomator(locator) # 通过描述 desc 去获取元素,因为极有可能没有 driver.find_element_by_accessibility_id() # tagname 不行 # class_name,可以,但是相当于原来的 tag_name,不能精确定位