APP元素信息操作API

本节讲介绍手机端元素信息的获取以及基本的输入操作。
  • 前置代码

    from appium import webdriver
    # server 启动参数
    desired_caps = {}
    # 设备信息
    desired_caps['platformName'] = 'Android'
    desired_caps['platformVersion'] = '5.1'
    desired_caps['deviceName'] = '192.168.56.101:5555'
    # app的信息
    desired_caps['appPackage'] = 'com.android.settings'
    desired_caps['appActivity'] = '.Settings'

    # 声明我们的driver对象
    driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

点击元素

发送数据到输入框

 方法:send_keys(vaue) # value:需要发送到输入框内的文本
  业务场景:
      1.打开设置
      2.点击搜索按钮
      3.输入内容abc
    代码实现:
        # 点击搜索按钮
        driver.find_element_by_id("com.android.settings:id/search").click()
        # 定位到输入框并输入abc
        driver.find_element_by_id("android:id/search_src_text").send_keys("abc")

    重点:
        大家可以将输入的abc 改成 输入中文,得到的结果:输入框无任何值输入且程序不会抱错
 
   解决输入中文问题:

        1.server 启动参数增加两个参数配置
            desired_caps['unicodeKeyboard'] = True
            desired_caps['resetKeyboard'] = True

        2.再次运行会发现运行成功
            # 点击搜索按钮
            driver.find_element_by_id("com.android.settings:id/search").click()
            # 定位到输入框并输入abc
            driver.find_element_by_id("android:id/search_src_text").send_keys("传智播客")

清空输入框内容

  方法:clear()
  业务场景:
      1.打开设置
      2.点击搜索按钮
      3.输入内容abc
      4.删除已输入abc
  代码实现:
      # 点击搜索按钮
      driver.find_element_by_id("com.android.settings:id/search").click()
      # 定位到输入框并输入abc
      input_text = driver.find_element_by_id("android:id/search_src_text")
      # 输入abc
      input_text.send_keys("abc")
      time.sleep(1)
      # 删除abc
      input_text.clear()

获取元素的文本内容

方法: text
  业务场景:
      1.进入设置
      2.获取所有元素class属性为“android.widget.TextView”的文本内容
  代码实现:
      text_vlaue = driver.find_elements_by_class_name("android.widget.TextView")
      for i in text_vlaue:
          print(i.text)
  执行结果:
      设置

      无线和网络
      WLAN
      更多
      设备
      显示
      提示音和通知
      存储

获取元素的属性值

  方法: get_attribute(value) # value:元素的属性
  ⚠️ value='name' 返回content-desc / text属性值
  ⚠️ value='text' 返回text的属性值
  ⚠️ value='className' 返回 class属性值,只有 API=>18 才能支持
  ⚠️ value='resourceId' 返回 resource-id属性值,只有 API=>18 才能支持
  业务场景:
      1.进入设置
      2.获取搜索按钮的content-desc属性值

 

 

  代码实现:
      # 定位到搜索按钮
      get_value = driver.find_element_by_id("com.android.settings:id/search")
      print(get_value.get_attribute("name"))
  执行结果:
      搜索

获取元素在屏幕上的坐标

 方法:location
  业务场景:
      1.进入设置页面
      2.获取搜索按钮在屏幕的坐标位置
  代码实现:
      # 定位到搜索按钮
      get_value = driver.find_element_by_id("com.android.settings:id/search")
      # 打印搜索按钮在屏幕上的坐标
      print(get_value.location)
  执行结果:
      {'y': 44, 'x': 408}

获取app包名和启动名

  获取包名方法:current_package
  获取启动名:current_activity
  业务场景:
      1.启动设置
      2.获取包名和启动名
  代码实现:
      print(driver.current_package)
      print(driver.current_activity)
  执行结果:
      com.tencent.news
      .activity.SplashActivity

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
posted @ 2021-03-10 20:38  Python从入门到放弃o  阅读(103)  评论(0编辑  收藏  举报