zoukankan      html  css  js  c++  java
  • 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
     
  • 相关阅读:
    自动档汽车档位介绍和驾驶知识与技巧
    4岁儿童发育指标与食谱指导
    0130 Lesson 13:Talking About Occupations 谈论职业
    [ python ] 列表和字符串的查找功能
    [ python ] 字典类型的一些注意问题
    [ python ] input()和raw_input()
    [ js ] 可否用多线程的思路,解决大数量数据的性能问题?
    python中对文件、文件夹的操作
    [ js ] 可否用多线程的思路,解决大数量数据的性能问题?
    [ python ] 字典类型的一些注意问题
  • 原文地址:https://www.cnblogs.com/wangxudong01/p/14514080.html
Copyright © 2011-2022 走看看