『與善仁』Appium基礎 — 22、獲取元素資訊的操作(一)

繁華似錦Fighting發表於2021-12-11

1、獲取元素文字內容

(1)text()方法

業務場景:

  1. 進入設定。
  2. 獲取所有元素class屬性為android.widget.TextView的文字內容。

程式碼實現:

# 定位元素
text_vlaue = driver.find_elements_by_class_name("android.widget.TextView")

# 列印頁面中class_name為android.widget.TextView元素的文字內容
for i in text_vlaue:
    print(i.text)

(2)get_attribute()方法

# value:元素的屬性
方法: get_attribute(value) 

說明:

  • value='name'返回content-desc/text屬性值。
    content-desc/text屬性值好像是不共存的,一個元素中這兩個屬性只有一個有值。)
  • value='text'返回text的屬性值。
  • value='className'返回class屬性值,
    只有API=>18才能支援(4.2.1版本以上就可以,7.1.1 API版本是25)
  • value='resourceId'返回resource-id屬性值,
    只有API=>18才能支援持(同上)

(3)綜合練習

"""
1.學習目標
    掌握appium元素文字資訊獲取
2.操作步驟
    2.1 元素.text   獲取元素text文字值(重點)
    2.2 元素.get_attribute(value)  根據value值獲取對應的內容
        value = "name"   獲取元素content-desc 或 text值(常用,重點)
        value = "text"   獲取元素text屬性值
        value = "className"  獲取元素class屬性值,Android 4.3以上版本
        value = "resourceId" 獲取元素id屬性值,Android 4.3以上版本
3.需求
    在設定APP中實現上述命令
"""
# 1.匯入appium
import time
from appium import webdriver

# 2.建立Desired capabilities物件,新增啟動引數
desired_caps = {
    "platformName": "Android",  # 系統名稱
    "platformVersion": "7.1.2",  # 系統版本
    "deviceName": "127.0.0.1:21503",  # 裝置名稱
    "appPackage": "com.android.settings",  # APP包名
    "appActivity": ".Settings"  # APP啟動名
}

# 3.啟動APP
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)

# 4.定位元素
# # 4.1 定位元素,搜尋按鈕,藍芽
search = driver.find_element_by_id("com.android.settings:id/search")
blue_tooth = driver.find_element_by_android_uiautomator('new UiSelector().text("藍芽")')

# 5.獲取元素屬性值
# 5.1 獲取藍芽的text值
print("藍芽text屬性值: ", blue_tooth.text)
print("藍芽text屬性值: ", blue_tooth.get_attribute("text"))
# 5.2 獲取搜尋的content-desc值
print("搜尋的content-desc屬性值: ", search.get_attribute("name"))
# 5.3 獲取搜尋的id屬性值
print("搜尋的id屬性值: ", search.get_attribute("resourceId"))
# 5.4 獲取搜尋的class屬性值
print("搜尋的class屬性值: ", search.get_attribute("className"))

# 6.關閉APP
time.sleep(3)
driver.quit()

執行結果:

藍芽text屬性值:  藍芽
搜尋的content-desc屬性值:  搜尋設定
搜尋的id屬性值:  com.android.settings:id/search
搜尋的class屬性值:  android.widget.TextView

2、獲取元素在螢幕上的座標

在移動端進行元素定位的時候,可能出現該元素位置不好定位,或者不能用上邊屬性的方式進行準確的定位,我們就可以用座標的方式操作手機,如滑動操作有時候就需要用到。

使用方法:location方法。

業務場景:

  1. 進入設定頁面。
  2. 獲取搜尋按鈕在螢幕的座標位置。

程式碼實現:

# 定位到搜尋按鈕
get_value = driver.find_element_by_id("com.android.settings:id/search")

# 列印搜尋按鈕在螢幕上的座標
print(get_value.location)

練習:

"""
1.學習目標
    掌握appium獲取元素座標
2.操作步驟
    元素.location   獲取元素座標
    app頁面座標分部:
        座標原點-螢幕左上角(0,0)
        從左向右 x座標,逐漸增大
        從上向下 Y座標,逐漸增大
3.需求
    在設定APP中實現藍芽定位
"""
# 1.匯入appium
import time
from appium import webdriver

# 2.建立Desired capabilities物件,新增啟動引數
desired_caps = {
    "platformName": "Android",  # 系統名稱
    "platformVersion": "7.1.2",  # 系統版本
    "deviceName": "127.0.0.1:21503",  # 裝置名稱
    "appPackage": "com.android.settings",  # APP包名
    "appActivity": ".Settings"  # APP啟動名
}

# 3.啟動APP
driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)

# 4.定位元素
blue_tooth = driver.find_element_by_android_uiautomator('new UiSelector().text("藍芽")')
# 4.1 獲取元素座標
print("藍芽座標: ", blue_tooth.location)
# 輸出結果:
# 藍芽座標:  {'x': 86, 'y': 265}
# # 得到的座標為元素左上角的座標。


# 4.3 獲取手機的寬度和高度
size = driver.get_window_size()  # 獲取手機螢幕大小
print(size)  # {'width': 576, 'height': 1024}

# 6.關閉APP
time.sleep(3)
driver.quit()

提示:

我們可以獲取元素的座標,也可以定位在螢幕中某個座標點進行操作。

相關文章