appium operation

Appium定位元素的方法有很多,比如經常用的by_name、by_resource-id、by_classname

下面介紹下通過UI Automator方法來定位元素的方法,而且這些方法定位都比較準。

先假設我們通過UiAutomator定位到的元素部分屬性如下:
Index 1
Text xxx
Resource-id android:id/text1
Class android.widget.TextView
Content-desc xxx

一、 通過Text屬性定位

直接通過text名稱定位:
Driver.find_element_by_android_uiautotmator(‘new UiSelector().text(“xxx”)’)

查找某個字符串包含有xxx的元素
Driver.find_element_by_android_uiautomator(‘new UiSelector().textContains(“xxx”)’)

某個以x打頭的元素
Driver.find_element_by_android_uiautomator(‘new UiSelector().textStartWith(“x”)’)

通過Matches方法查找
Driver.find_element_by_android_uiautomator(‘new UiSelector().textMatches(“^xx.*”)’)

二、 通過class屬性定位

通過class名稱查找:
driver.find_element_by_android_uiautomator('new UiSelector().className("android.widget.TextView").text("xxx")')

匹配text是xxx並且classname含有TextView的元素:
driver.find_element_by_android_uiautomator('new UiSelector().classNameMatches(".*TextView$").text("xxx")')

三、 Xpath方法定位

通過同級元素定位同級元素,yyyy爲同級元素節點text名稱
driver.find_element_by_android_uiautomator('new UiSelector().text("xxx").fromParent(new UiSelector().text("yyyy"))')

通過父級元素定位子元素 ListView爲父級節點classname
driver.find_element_by_android_uiautomator('new UiSelector().className("android.widget.ListView").childSelector(new UiSelector().text("xxx"))')

四、 resourceId屬性定位

通過resourceId定位:
driver.find_element_by_android_uiautomator('new UiSelector().resourceId("android:id/text1")')

通過matches方法定位:
driver.find_element_by_android_uiautomator('new UiSelector().resourceIdMatches(".*id/text1$")')

好了,先介紹很多吧,對元素進行操作的一些方法及獲取元素的屬性值都與web的類似

#鎖定屏幕時間秒
driver.lock(5)
#將APP放置後臺 參數時間秒
driver.background_app(5)
#收起鍵盤
driver.hide_keyboard()
#啓動Activity
driver.start_activity('包名', 'activity名')
#打開通知欄
driver.open_notifications()
#檢查應用是否已經安裝 參數包名
driver.is_app_installed('xxxxxx')
#安裝應用 參數 路徑
driver.install_app('path/my.apk')
#刪除應用
driver.remove_app('xxxxxx')
#搖晃(Shake)
driver.shake()
#關閉應用
driver.close_app()
#重置(等於卸載後重裝)
driver.reset()
#獲取應用的字符串
driver.app_strings
#按鍵事件
driver.keyevent(具體的按鍵)
#獲取當前Activity
driver.current_activity
#觸摸動作(TouchAction) / 多點觸摸動作(MultiTouchAction)
action = TouchAction(driver)
action.press(element=el, x=10, y=10).release().perform()
#滑動(Swipe) 參數 開始x,y座標 滑動到的X,y座標, 持續時間ms
driver.swipe(start=75, starty=500, endx=75, endy=0, duration=800)
#雙指向內移動縮小屏幕
driver.pinch(element=el)
放大 driver.zoom(ele)
座標點擊
driver.tap([(x,y)],time)

滾動
driver.scroll(ele1,ele2)

按住element並拖動到另外一個element上
driver.drag_and_drop(ele1,ele2)

滑動
driver.swipe(x1,y1,x2,y2,time)
driver.flick(x1,y1,x2,y2)

#滑動到某個元素。
todo: xxxx

#拉出文件 (Pull File)從設備中拉出文件
driver.pull_file('Library/xxx/xxx.plist')

#推送文件(Push file) 把文件放到設備中
data = "test is good"
path = "/data/local/tmp/test.txt"
driver.push_file(path, data.encode('base64'))``

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章