Appium入門案例之Android篇
Appium環境搭建篇參考這個“環境搭建”
(一)、獲取package和activity
安卓自動化測驗之前首先需要了解package和activity,由于測驗前需要這兩個引數的值來啟動,一般稱前置代碼;
獲取手機當前運行的package和activity的命令是:
adb shell dumpsys window w |grep \/ |grep name= #mac
adb shell dumpsys window w |findstr \/ |findstr name= #windows
紅框的內容就是需要用到的package和activity

也可以通過adb命令來得到,比如
1.adb shell pm list packages (獲取所有包名)
2.adb logcat>D:/log.log (抓取手機log到指定路徑)
用notepad打開并搜索:cmp=c
可以找到對應的package和activity
(二)、連接Appium,啟動會話
運行appium,啟動服務之后,點擊右上角第一個按鈕進行配置
如下圖所示:
"platformName": "Android", #名稱 "platformVersion": "10", #版本 "deviceName": "sanxing", #設備名 "appPackage": "com.android.calculator2", #package名 "appActivity": "com.android.calculator2.Calculator" #activity名

填好之后啟動會話即可,
出現如下畫面即代表已經連接上,在這個界面可以進行元素的定位以及對手機發送一些訊息,類似于uiautomatorviewer工具

(三)、Appium常用的api
driver.start #啟動app driver.close_app #關閉app driver.install_app(path)#安裝app driver.remove_app(package名稱)#卸載app is_app_installed(package名稱) 回傳布爾型 用于判斷是否安裝 background_app(時間) #置于后臺 時間到了會自動回來 driver.location# 獲取元素位置資訊 driver.size #獲取元素大小 driver.text#獲取元素文本 driver.get_attribute()value #獲取元素屬性值 [ resources-id 寫成resourceId class寫成className name可以獲取text和content-desc兩個屬性的中的文本值 ] swipe、scroll、drag_and_drop(都是滑動) driver.swipe(start_x,start_y,end_x,end_y,duration=None) (有慣性) driver.scroll(開始的元素、結束的元素) #從一個元素滑動到另外一個元素后停留的地方(有慣性) driver.drag_and_drop(開始的元素,結束的元素)#從一個元素滑動到另外一個元素,第二個元素替代第一個元素的位置(沒有慣性) TouchAction 高級手勢,實作滑動長按拖動,首先要創建touchaction物件,最后都要用perform()執行 #執行輕按 t1=TouchAction(driver) t1.tap(定位).perform() #坐標形式 t1.tap(x=100,y=100).perform() #雙擊 t1.tap(定位,count=2).perform() #按下 t1.press(定位or坐標).perform() t1.press.(定位or坐標).release().perform() #抬起 #長按 t1.press(定位or坐標).perform() t1.press.(定位or坐標).wait(2000)release().perform() #單位毫秒,等待時間 t1.press(定位or坐標).long_press(定位or坐標,duration=1000).perform() #單位毫秒,等待時間 #移動 t1.move_to(定位or坐標).perform() #獲取手機解析度 driver.get_window_size() #截圖 driver.get_screenshot_as_file(“路徑”) #獲取手機網路 driver.network_connection driver.set_network_connection(1)飛行模式 1.飛行模式 2僅Wi-Fi 4僅資料 6全部 ? #發送手機按鍵到設備(三大按鍵、音量、電源) driver.press_keycode() 具體值參考https://blog.csdn.net/shililang/article/details/14449527 #下拉通知中心 driver.open_notifications()
(四)實體操作
下面貼一段代碼來實際操作計算器以及跳轉到瀏覽器中輸入內容
from appium import webdriver import unittest,time desired_caps=dict() desired_caps['platformName'] = 'Android' desired_caps['platformVersion'] = '10' desired_caps['deviceName'] = 'huawei' desired_caps['appPackage'] = 'com.android.settings' desired_caps['appActivity'] ='com.android.settings.HWSettings' driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps) time.sleep(3) print(driver.current_package) print(driver.current_activity) driver.start_activity('com.android.calculator2','com.android.calculator2.Calculator') time.sleep(5) print(driver.current_package) print(driver.current_activity) driver.find_element_by_id('com.android.calculator2:id/digit_4').click() time.sleep(1) driver.find_element_by_id('com.android.calculator2:id/digit_6').click() time.sleep(1) driver.find_element_by_id('com.android.calculator2:id/op_add').click() time.sleep(1) driver.find_element_by_id('com.android.calculator2:id/digit_9').click() time.sleep(1) driver.find_element_by_id('com.android.calculator2:id/eq').click() time.sleep(1) driver.find_element_by_id('com.android.calculator2:id/formula').clear() time.sleep(1) driver.start_activity('com.android.browser','com.uc.browser.InnerUCMobile') time.sleep(3) driver.find_element_by_xpath('//android.view.View[@content-desc="搜索或輸入網址"]/com.uc.framework.ui.customview.b.a[2]').click() time.sleep(1) driver.find_element_by_class_name('android.widget.EditText').send_keys("test") time.sleep(1) driver.quit()
到此appium關于安卓的操作已經差不多了
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/258884.html
標籤:其他
