appium+pthon-查看包名、點擊、滑動、拖動、輸入、定位toast

查看包名和launcherActivity
aapt dump badging D:\a\b\name.apk

包名:package: name=‘aaa’
launchActivity:lauchable-activity

點擊
driver.find_element_by_id(‘aaa’).click()
driver.tap([(),(),(),()],duration=None)

滑動
swipe(self, start_x, start_y, end_x, end_y, duration=None)
Swipe from one point to another point, for an optional duration.
從一個點滑動到另外一個點,duration是持續時間

:Args:
- start_x - 開始滑動的x座標
- start_y - 開始滑動的y座標
- end_x - 結束點x座標
- end_y - 結束點y座標
- duration - 持續時間,單位毫秒

:Usage:
driver.swipe(100, 100, 100, 400)

拖動

輸入
driver.find_element_by_id(‘aaa’).set_value(‘aaa’)
driver.find_element_by_id(‘aaa’).send_keys(‘aaa’)

定位toast
需要appium1.6.3以上的版本才支持。
需要在desire_caps中設置參數automationName的值爲Uiautomator2 。

如果要定位第一個圖片元素,可以先用find_elements定位一組Image對象,再通過下標索引[0]取出第一個就可以了。

點搜索結果第一個driver.find_elements_by_class_name(‘android.widget.Image’)[0].click()

TouchAction
from appium.webdriver.common.touch_action import TouchAction

class TouchAction(object):
def init(self, driver=None):
self._driver = driver
self._actions = []

def tap(self, element=None, x=None, y=None, count=1):
    模擬手指觸摸屏

def press(self, el=None, x=None, y=None):
    短按:模擬手指按住一個元素,或者座標

def long_press(self, el=None, x=None, y=None, duration=1000):
    長按:模擬按住一個元素,或者座標

def wait(self, ms=0):
    按住元素後的等待時間

def move_to(self, el=None, x=None, y=None):
    移動手指到另外一個元素,或者座標,注意這裏座標不是絕對座標,是偏移量
    
def release(self):
    釋放手指

def perform(self):
    執行前面的動作

2.TouchAction裏面有這幾個動作:
觸摸 (tap)
短按 (press)
長按 (long_press)
等待 (wait)
移動到 (moveTo)
釋放 (release)
執行 (perform)

coding:utf-8from appium import webdriverfrom appium.webdriver.common.touch_action import TouchActionfrom time import sleep
desired_caps = {
‘platformName’: ‘Android’,
‘deviceName’: ‘127.0.0.1:62001’,
‘platformVersion’: ‘4.4.2’,
‘appPackage’: ‘com.tencent.mobileqq’,
‘appActivity’: ‘com.tencent.mobileqq.activity.SplashActivity’,
‘noReset’: ‘true’
}
driver = webdriver.Remote(‘http://127.0.0.1:4723/wd/hub’, desired_caps)

sleep(5)

jiu = ‘resourceId(‘com.tencent.mobileqq:id/name’).index(6)’
loc = driver.find_element_by_android_uiautomator(jiu).location
print(‘獲取九宮格座標位置:%s’%loc)
s = driver.find_element_by_android_uiautomator(jiu).size
print(‘獲取九宮格寬和高:%s’%s)

獲取九個點的座標
gongge = {}
gongge[1] = (None, loc[‘x’]+s[‘width’]/6, loc[‘y’]+s[‘height’]/6)
gongge[2] = (None, loc[‘x’]+s[‘width’]/63, loc[‘y’]+s[‘height’]/6)
gongge[3] = (None, loc[‘x’]+s[‘width’]/6
5, loc[‘y’]+s[‘height’]/6)
gongge[4] = (None, loc[‘x’]+s[‘width’]/6, loc[‘y’]+s[‘height’]/63)
gongge[5] = (None, loc[‘x’]+s[‘width’]/6
3, loc[‘y’]+s[‘height’]/63)
gongge[6] = (None, loc[‘x’]+s[‘width’]/6
5, loc[‘y’]+s[‘height’]/63)
gongge[7] = (None, loc[‘x’]+s[‘width’]/6, loc[‘y’]+s[‘height’]/6
5)
gongge[8] = (None, loc[‘x’]+s[‘width’]/63, loc[‘y’]+s[‘height’]/65)
gongge[9] = (None, loc[‘x’]+s[‘width’]/65, loc[‘y’]+s[‘height’]/65)print gongge
def pianyi(a=1,b=2):
‘aaa’‘計算從a點到b點的偏移量’aaa’’
g1 = gongge[a]
g2 = gongge[b]
r = (None, g2[1]-g1[1], g2[2]-g1[2])
return r

執行解鎖
TouchAction(driver).press(*gongge[1]).wait(300).move_to(*pianyi(1,2)).wait(300).move_to(*pianyi(2,3)).wait(
300).move_to(*pianyi(3,5)).wait(300).move_to(*pianyi(5,7)).wait(300).move_to(*pianyi(7,8)).wait(300).move_to(*pianyi(8,9)).wait(
300).release().perform()

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