1. 程式人生 > 其它 >python+appium【第五章(擴充套件)-基本元素操作】

python+appium【第五章(擴充套件)-基本元素操作】

上次教大家識別元素,現在教大家一些手機操作,以及一些擴充套件內容(示例程式碼:澎湃新聞)

獲取資訊

  • 獲取元素的文字資訊
    # 與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_displayed() print(phone)
  • 檢視元素是否可用
    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鍵

後續更新