一、capabilities設置與啓動html
①啓動本地服務器node
②啓動檢查器python
③填入相應的參數web
deviceName獲取方式:adb devices服務器
appPackage獲取方式:aapt dump badging + 包名app
appActivity獲取方式:aapt dump badging + 包名dom
快速匹配:aapt dump badging + 包名 | find 「launchable-activity」spa
關於跟手機創建鏈接:.net
https://blog.csdn.net/JOJOY_tester/article/details/72081905debug
Appium幾種定位元素的方法:
一、id定位
二、元素定位
①name、classname定位
②相對定位
三、xpath定位('//*[@類名="xxx"]')
XPath使用路徑表達式從XML文檔中選擇一個或多個節點的列表。如下是有用的路徑和表達,從XML文檔選擇節點的任何節點/列表清單。
表達式 | 描述 |
---|---|
node-name | 選擇具備給定名稱的全部節點「nodename」 |
/ | 選擇從根節點開始 |
// | 選擇從當前節點匹配開始的選擇 |
. | 選擇當前節點 |
.. | 選擇當前節點的父節點 |
@ | 選擇屬性 |
student | 例如:選擇名稱爲「student」的全部節點 |
class/student | 例如:選擇屬於類的全部學生的子類元素 |
//student | 選擇文檔中全部學生的元素 |
謂詞用於查找特定的節點或一個節點含有特定的值,並使用所定義 [...] .
表達式 | 結果 |
---|---|
/class/student[1] | 選擇的是類元素的子第一個學生的元素 |
/class/student[last()] | 選擇的是類元素的子最後一個學生的元素 |
/class/student[last()-1] | 選擇的是類元素倒數的第二個學生的子元素 |
//student[@rollno='493'] | 選擇一個名爲rollno爲'493'值的屬性的學生元素 |
通配符 | 描述 |
---|---|
* | 匹配任何元素節點 |
@* | 匹配任何屬性節點 |
node() | 匹配任何類型的節點 |
四、list定位
find_elements_by_xx (多個元素定位)
生成隨機的帳戶:用到random
五、Uiautomator定位
元素等待
http://www.cnblogs.com/mengyu/p/6972968.html
①強制等待
設置固定的等待時間,使用sleep()方法實現
from time import sleep
# 強制等待5秒
sleep(5)
②隱式等待
隱式等待是針對所有元素設置的等待時間
driver.implicitly_wait(2) # 等待2秒
③顯式等待
顯式等待是針對某個元素來設置的等待時間
Toast元素識別
H5元素搭建
屏幕截圖
driver.save_screenshot() 保存截圖到當前路徑
driver.get_screenshot_as_file() 保存截圖到指定路徑
appium滑動操做
連續滑動
TouchAction
先導入對應的模塊:
from appium.webdriver.common.touch_action import TouchAction
對應操做的方法:
短按:press() 按壓一個元素或座標
TouchAction(driver). press(x,y)
長按:longpress() 比按壓多個一個duration(按壓時間)時間參數,以毫秒爲單位
TouchAction(driver).longpress(x,y,1000)
點擊:tap()
移動:move_to()
暫停:wait() 等待時間,單位毫秒
釋放:release() 結束屏幕上的一系列動做的命令操做
執行:perform() 講執行的操做發送到服務器的命令操做
組合示例:
TouchAction(driver). press(x,y) .wait(1000).move_to(x2,y2).release() #點擊->等待1000毫秒->移動->釋放
地圖縮放
MultiAction
導入
from appium.webdriver.common.multi_action import MultiAction
capabilities更改成yaml
官網下載地址:https://pypi.org/project/pyaml/
pip install pyyaml 安裝yaml
若是遇到報:
處理方法:
安裝完畢後檢測是否安裝成功 cmd->python->import yaml
日誌收集
首先咱們日誌須要按照info、debug、error等級別來進行區分的。固然這個級別能夠本身去設置。在通常的狀況下咱們普通的輸出咱們直接用info類型,調試的時候用debug類型,若是預計有錯誤時那麼咱們就須要用error類型的日誌,通常狀況去info級別最爲合適。
日誌格式化是爲了提升日誌的可閱讀性,好比:時間+模塊+行數+日誌具體信息 的內容格式。若是日誌信息雜亂無章的所有輸出來,這樣也不利於定位問題。以下所示就是日誌格式化輸出,很是便於閱讀查看。