Appium元素信息操作API

Appium元素信息操作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)
  • 1、点击元素

  • 2、发送数据到输入框

      方法: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("传智播客")
  • 3、清空输入框内容

      方法: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()
    
  • 4、获取元素的文本内容

      方法: 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
          更多
          设备
          显示
          提示音和通知
          存储
    
  • 5、获取元素的属性值
      方法: 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"))
      执行结果:
          搜索
    
  • 6、获取元素在屏幕上的坐标
      方法:location
    
      业务场景:
          1.进入设置页面
          2.获取搜索按钮在屏幕的坐标位置
    
      代码实现:
          # 定位到搜索按钮
          get_value = driver.find_element_by_id("com.android.settings:id/search")
          # 打印搜索按钮在屏幕上的坐标
          print(get_value.location)
      执行结果:
          {'y': 44, 'x': 408}

总代码: 

from appium import webdriver
import time

#server 启动参
desired_caps = {}
# 设备信息
desired_caps['platformName'] = 'Android'
desired_caps['platformVersion'] = '5.1'
desired_caps['deviceName'] = '192.168.203.101:5555'
# app信息
desired_caps['appPackage'] = 'com.android.settings'
desired_caps['appActivity'] = '.Settings'
#支持中文
desired_caps['unicodeKeyboard'] = True
desired_caps['resetKeyboard'] = True
#连接设备
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

#通过id找到搜索按钮,并点击
driver.find_element_by_id("com.android.settings:id/search").click()
#找到搜索框
search=driver.find_element_by_id("android:id/search_src_text")
#搜索框中输入文字
search.send_keys("武汉加油!")
time.sleep(1)
driver.find_element_by_class_name("android.widget.ImageButton").click()
time.sleep(1)
#获取设置页面的元素列表
elementList=driver.find_elements_by_id("com.android.settings:id/title")
for i in elementList:
    print(i.text)
time.sleep(2)
print("-----------")
elems=driver.find_elements_by_class_name("android.widget.TextView")
for j in elems:
    print(j.get_attribute('name'))
print("-----------")
for j in elems:
    print(j.get_attribute('text'))
print("-----------")
for j in elems:
    print(j.get_attribute('className'))
print("-----------")
for j in elems:
    print(j.get_attribute('resourceId'))

#输出搜索按钮的坐标
print("搜索按钮坐标:",driver.find_element_by_id("com.android.settings:id/search").location)
time.sleep(3)
driver.quit()

实现效果:

运行结果: 

D:\Anaconda3\python.exe E:/pythonProject/get_info.py
WLAN
更多
显示
提示音和通知
存储
电池
应用
用户
位置信息
安全
-----------
设置
搜索
无线和网络
WLAN
更多
设备
显示
提示音和通知
存储
电池
应用
用户
个人
位置信息
安全
-----------
设置

无线和网络
WLAN
更多
设备
显示
提示音和通知
存储
电池
应用
用户
个人
位置信息
安全
-----------
android.widget.TextView
android.widget.TextView
android.widget.TextView
android.widget.TextView
android.widget.TextView
android.widget.TextView
android.widget.TextView
android.widget.TextView
android.widget.TextView
android.widget.TextView
android.widget.TextView
android.widget.TextView
android.widget.TextView
android.widget.TextView
android.widget.TextView
-----------
None
com.android.settings:id/search
com.android.settings:id/category_title
com.android.settings:id/title
com.android.settings:id/title
com.android.settings:id/category_title
com.android.settings:id/title
com.android.settings:id/title
com.android.settings:id/title
com.android.settings:id/title
com.android.settings:id/title
com.android.settings:id/title
com.android.settings:id/category_title
com.android.settings:id/title
com.android.settings:id/title
搜索按钮坐标: {'x': 1314, 'y': 76}

Process finished with exit code 0
发布了240 篇原创文章 · 获赞 77 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/dpl12/article/details/104136154