appium-- 頁面元素抓取

1. 到sdkmanger 路徑下 run : uiautomator.html

2. 啓動被測應用程序。android

3. 獲取該應用程序的當前頁面。web

4. 常見的定位方式:緩存

driver.findElementByName: text屬性
網絡

driver.findElementById: sourceID屬性
app

driver.findElementByXPath: 具備必定約束的路徑抽象標示, 基於XPath方式測試

 

系統按鍵事件ui

 

 

 press_keycode(AndroidKeyCode)//發送按鍵事件

 

例如:點擊home鍵,home鍵的KeyCode是3

 

driver.press_keycode(3)

 

 

 

鍵名                  描述       鍵值
KEYCODE_CALL        撥號鍵     5
KEYCODE_ENDCALL     掛機鍵     6
KEYCODE_HOME        按鍵Home      3
KEYCODE_MENU        菜單鍵     82
KEYCODE_BACK        返回鍵     4
KEYCODE_SEARCH      搜索鍵     84
KEYCODE_CAMERA      拍照鍵     27
KEYCODE_FOCUS       拍照對焦鍵   80
KEYCODE_POWER       電源鍵     26
KEYCODE_NOTIFICATION 通知鍵        83
KEYCODE_MUTE        話筒靜音鍵   91
KEYCODE_VOLUME_MUTE 揚聲器靜音鍵  164
KEYCODE_VOLUME_UP   音量增長鍵   24
KEYCODE_VOLUME_DOWN 音量減少鍵   25
 

 

更多KeyCode能夠查看下面的博客:

 

 

 

 

 

 

driver的一些比較重要操做

 

 

 

1.reset()

 

//重置app

 

這時候driver會重置,至關於卸載重裝應用。因此本地緩存會失效

 

driver.reset()

 

 

 

2.start_activity(包名,activity名)

 

//啓動app的某一個activity

 

例如:driver.start_activity("com.wuba.zhuanzhuan","./presentation.view.activity.LaunchActivity")

 

 

 

啓動一個activity,這個activity必須是AndroidManifest.xml中有intent-filter的activity

 

<intent-filter>
    <action android:name="android.intent.action.MAIN"/>
   <category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
 

 

這種啓動activity和driver的reset()不一樣的是

 

 

 

3.contexts

 

//得到全部contexts

 

driver.contexts

 

 

 

結果以下:

 

['NATIVE_APP', 'WEBVIEW_com.android.browser']

 

 

 

NATIVE_APP:native的context

 

WEBVIEW_com.android.browser:webview的context,存放html的容器

 

 

 

4.current_context

 

//查看當前的context

 

driver.current_context

 

 

 

5.switch_to.context(context名)

 

//切換context

 

driver.switch_to.context("WEBVIEW_com.wuba.zhuanzhuan")

 

 

 

NATIVE時不能定位WEBVIEW的內容,在WEBVIEW的context時不能定位NATIVE的內容。

 

因此須要切換到對應的context中去進行操做

 

 

 

6.setNetworkConnection(bitmask掩碼)

 

//設置網絡類型

 

例如:設置網絡類型爲只開wifi

 

driver.set_network_connection(2)

 

 

 

網絡的bitmask掩碼以下:

 

| 值 (別名)           | 數據鏈接 | Wifi 鏈接 | 飛行模式 |

 

| ------------------ | ---- | ---- | ------------- |

 

| 0 (什麼都沒有)       | 0    | 0    | 0 |

 

| 1 (飛行模式)         | 0    | 0    | 1 |

 

| 2 (只有Wifi)        | 0    | 1    | 0 |

 

| 4 (只有數據鏈接)     | 1    | 0    | 0 |

 

| 6 (開啓全部網絡)     | 1    | 1    | 0 |

 

 

 

 
7.scroll(起始元素,結束元素)
driver.scroll(origin_el,destination_el)
 
8.得到當前頁面的全部元素
driver.page_source
 
這能夠用來判斷元素是否存在,例如assert "發佈成功" in driver.page_source)
 

 

9.補充一些driver啓動時可能用到的項

 

其實這些在上一篇啓動裏都有介紹,可是有些可能你們沒注意到的點再列一下。這些點也是我在測試中實際遇到的點

 

 

 

autoLaunch :Appium是否要自動啓動或安裝app,默認true

 

desired_caps['autoLaunch'] = 'false'

 

有的時候我不想讓appium每次都啓動app,想本身去啓動activity,那這個項這時就能夠起做用了

 

 

 

noReset:在會話前是否重置app狀態。默認是false

 

desired_caps['noReset'] = 'true'

 

 

 

newCommandTimeout:設置未接收到新命令的超時時間,默認60s

 

若是60s內沒有接收到新命令,appium會自動斷開鏈接,若是我須要很長時間作driver以外的操做,可能延長接收新命令的超時時間

 

desired_caps["newCommandTimeout"]=1800
相關文章
相關標籤/搜索