美文网首页
UIAutomator定位简介

UIAutomator定位简介

作者: Chaweys | 来源:发表于2022-01-26 02:33 被阅读0次

    使用方法 find_element_by_android_uiautomator() 可以运用UiAutomator元素定位
    1、id定位:
    id定位是根据元素的resource-id属性来进行定位,使用 UiSelector().resourceId()方法
    # 用户名输入框清除:通过id
    driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.tal.kaoyan:id/login_email_edittext")').clear()
    # 用户名输入框输入账户:通过id
    driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.tal.kaoyan:id/login_email_edittext")').send_keys("zxw123")
    
    
    2、text定位:
    text定位就是根据元素的text属性值来进行定位,使用 new UiSelector().text()方法
    # 用户名输入框清除:通过text
    driver.find_element_by_android_uiautomator('new UiSelector().text("请输入用户名")').clear()
    # 用户名输入框输入账户:通过text
    driver.find_element_by_android_uiautomator('new UiSelector().text("请输入用户名")').send_keys("zxw123")
    
    
    3、class name定位:
    与Appium class定位方式一样,也是根据元素的class属性来进行定位,使用new UiSelector().className()方法
    # 用户名输入框清除:通过class_name
    driver.find_element_by_android_uiautomator('new UiSelector().className("android.widget.EditText")').clear()
    # 用户名输入框输入账户:通过class_name
    driver.find_element_by_android_uiautomator('new UiSelector().className("android.widget.EditText")').send_keys("zxw123")
    
    举例:
    # -*-coding:utf-8 -*-
    # @Author : hudechao
    # @Time : 2022/1/20 2:07
    
    from AppiumTest import findElement
    
    """
    等录kyb:
    1、检测是否第一次登录,
    2、是第一次登录,调直接登录方法,
    3、不是第一次登录,点击"我"-"未登录"-调用直接登录方法
    """
    
    driver = findElement.driver()
    
    def login():
        
        # 用户名输入框清除:通过id
        driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.tal.kaoyan:id/login_email_edittext")').clear()
        # 用户名输入框输入账户:通过id
        driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.tal.kaoyan:id/login_email_edittext")').send_keys("zxw123")
    
        # # 用户名输入框清除:通过text
        # driver.find_element_by_android_uiautomator('new UiSelector().text("请输入用户名")').clear()
        # # 用户名输入框输入账户:通过text
        # driver.find_element_by_android_uiautomator('new UiSelector().text("请输入用户名")').send_keys("zxw123")
    
        # # 用户名输入框清除:通过class_name
        # driver.find_element_by_android_uiautomator('new UiSelector().className("android.widget.EditText")').clear()
        # # 用户名输入框输入账户:通过class_name
        # driver.find_element_by_android_uiautomator('new UiSelector().className("android.widget.EditText")').send_keys("zxw123")
    
    
        # 密码输入框输入密码
        driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.tal.kaoyan:id/login_password_edittext")').send_keys("zxw123")
        # 点击登录按钮
        driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.tal.kaoyan:id/login_login_btn")').click()
    
    
    def checkCancelButton():
        try:
            # 如果是首次安装运行,会有升级提示
            cancelButton = driver.find_element_by_id("android:id/button2")
        except Exception as e:
            print("cancelButton is not exist")
        else:
            cancelButton.click()
            print("点击取消按钮")
    
    def checkSkipButton():
        try:
            # 升级提示后的跳过按钮
            skipButton = driver.find_element_by_id("com.tal.kaoyan:id/tv_skip")
        except Exception as e:
            print("skipButton is not exist")
        else:
            skipButton.click()
            print("点击跳过按钮")
    
    
    try:
        # 检查是否已经登录过,如果登录过,"我"按钮元素存在
        driver.find_element_by_id("com.tal.kaoyan:id/mainactivity_button_mysefl")
    except Exception as e:
        print("首次登录")
        checkCancelButton()
        checkSkipButton()
        login()
    else:
        driver.find_element_by_id("com.tal.kaoyan:id/mainactivity_button_mysefl").click()
        driver.find_element_by_id("com.tal.kaoyan:id/activity_usercenter_username").click()
        print("再次登录")
        login()
    
    

    相关文章

      网友评论

          本文标题:UIAutomator定位简介

          本文链接:https://www.haomeiwen.com/subject/esoshrtx.html