查看包名和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’]/65, 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’]/63, loc[‘y’]+s[‘height’]/63)
gongge[6] = (None, loc[‘x’]+s[‘width’]/65, loc[‘y’]+s[‘height’]/63)
gongge[7] = (None, loc[‘x’]+s[‘width’]/6, loc[‘y’]+s[‘height’]/65)
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()