python+appium【第五章(擴充套件)-基本元素操作】
阿新 • • 發佈:2021-09-17
上次教大家識別元素,現在教大家一些手機操作,以及一些擴充套件內容(示例程式碼:澎湃新聞)
獲取資訊
- 獲取元素的文字資訊
# 與selenium一致 text = driver.find_element(By.XPATH,'//x[@x="x"]').text print(text) 示例: text = driver.find_element(By.XPATH, '//android.widget.ImageView[@bounds="[1217,2628][1329,2730]"]') print(text)
- 獲取螢幕解析度
window = driver.get_window_size() print(window)
- 獲取螢幕左上方座標
location = driver.location print(location)
元素斷言操作
對於原生應用來講,元素斷言可以通過獲取displayed、enabled、selected屬性值,然後通過條件語句if來進行判斷
- 檢視元素是否可見
is_displayed(self):此元素是否可見。隱藏元素和被控制元件擋住無法操作的元素(僅限H5和webview支援) 示例: # 檢視元素是否可見 is_displayed() phone = driver.find_element(By.XPATH, '//android.widget.EditText[@text="輸入11位手機號"]
- 檢視元素是否可用
is_enabled(self):此元素是否可用。元素灰色和無法操作的元素(僅限H5和webview支援) # 檢視元素是否可用 is_enabled enabled = driver.find_element(By.XPATH, '//android.widget.TextView[@resource-id="com.wondertek.paper:id/get_verification_code"]').is_enabled() print(enabled)
- 檢視元素是否被選中
is_selected(self):此元素是否被選中。適用於單選框、複選框等型別的元素(僅限H5和webview支援) select = driver.find_element(By.XPATH, '//android.widget.CheckBox[@resource-id="com.wondertek.paper:id/checkbox_agreement"]').is_selected() print(select)
基本按鍵類操作
- 鎖屏
# 鎖屏3s ==》 交叉事件 driver.lock(3) print(driver.is_locked()) # 判斷是否鎖屏,是則返回false
- 解鎖
# 解鎖 driver.unlock() time.sleep(3) print(driver.is_locked())
- 組合使用
import time
from appium import webdriver
from appium.webdriver.webdriver import By
from appium.webdriver.connectiontype import ConnectionType
des = {
"platformName": "Android",
"platformVersion": "9",
"deviceName": "mac虛擬機器",
"appPackage": "com.wondertek.paper",
"appActivity": "cn.thepaper.paper.ui.main.MainActivity",
"udid": "192.168.56.104:5555",
"noReset": "True"
}
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', des)
time.sleep(2)
# 鎖屏3s ==》 交叉事件 driver.lock(3) print(driver.is_locked()) # 判斷是否鎖屏,是嘖返回false # 解鎖 driver.unlock() time.sleep(3) print(driver.is_locked()) - 橫豎屏設定
# 橫豎屏設定 driver.orientation = "LANDSCAPE" # 設定橫屏 time.sleep(3) driver.orientation = "PORTRAIT" # 設定豎屏
- 開啟通知欄
# 開啟通知欄 driver.open_notifications() print(driver.orientation)
- 網路配置
network_connection:獲取網路狀態,返回整型數字0(None)、1(AirplaneMode)、2(Wifionly)、4(Dataonly)、6(Allnetworkon)
# 網路配置 print(driver.network_connection) # 檢視當前網路狀態 driver.set_network_connection(1) # 飛航模式 0 1 2 4 6 time.sleep(5)
# set_network_connection(self,connection_type):設定網路狀態,使用數字或匯入ConnectionType類進行傳參設定 driver.set_network_connection(ConnectionType.ALL_NETWORK_ON) # 全開 - 截圖操作
driver.save_screenshot('pengpai.png') # 傳入存放路徑
- 按鍵操作
按鍵類操作API講解:按鍵類操作用來模擬在手機裝置上進行按鍵操作,常用API如下:
1、press_keycode(self,keycode,metastate=None,flags=None):模擬按鍵輸入,其中:keycode:傳送到裝置的鍵值編碼可以通過AndroidKeyCode進行查詢對應數值metastate:將被髮送的元資訊flags:設定的按鍵事件標記
import time from appium import webdriver from appium.webdriver.webdriver import By from appium.webdriver.connectiontype import ConnectionType des = { "platformName": "Android", "platformVersion": "9", "deviceName": "mac虛擬機器", "appPackage": "com.android.settings", "appActivity": "com.android.settings.Settings", "udid": "192.168.56.104:5555", "noReset": True } driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', des) time.sleep(2) driver.find_element(By.XPATH, '//android.widget.TextView[@text="在設定中搜索"]').click() time.sleep(1) driver.press_keycode(29, 64, 59) # a 開啟左邊shift鍵的開關 按住左邊shift鍵 == A 組合鍵 time.sleep(1) driver.press_keycode(29, 128, 60) # a 開啟右邊的shift鍵開關 按住右邊shift鍵 == A time.sleep(1) driver.press_keycode(29, 1048576) # a 開啟大小寫開關 time.sleep(1) driver.press_keycode(29, 1) # 1 開啟shift鍵
後續更新