點擊右邊

使用swipe要領摹擬屏幕滑動與手勢暗中國 老虎機碼繪制

App主動化測試中有兩個很緊張的操作,屏幕滑動與繪制手勢暗碼。現在許多App在啟動時,都存在啟動時的指導動畫或者者加載上下文內容時必要手動上滑或者者下滑加載頁面,以是在主動化測試的進程中摹擬手的滑動操作望起來就很緊張了;第二個比較緊張的是摹擬手動繪制九宮格實現手勢暗碼的配置,這類手勢暗碼在我相識的規模內,大多在金融類的app中最多見,還有一些對用戶信息失密性較好的app中,以是,摹擬繪制手勢暗碼也是app主動化測試中必需把握的操作,那末接上去咱們就最先講授兩種操作該若何完成, 在進入正題之前,你還應當曉得,手機中橫縱坐標的原點是從屏幕的左上角極點(0, 0)的地位最先的

滑動屏幕

swipe要領

摹擬滑動屏幕的操作,咱們經由過程swipe要領完成,先望一下這個要領的源代碼

def swipe(self, start_x, start_y, end_x, end_y, duration=None):
“大眾公眾”大眾Swipe from one point to another point, for an optional duration.
Args:
start_x (int): x-coordinate at which to start
start_y (int): y-coordinate at which to start
end_x (int): x-coordinate at which to stop
end_y (int): y-coordinate at which to stop
duration (:obj:`int`, optional): time to take the swipe, in ms.
Usage:
driver.swipe(100, 100, 100, 400)
Returns:
`WebElement`
“大眾”大眾”大眾
# `swipe` is something like press-wait-move_to-release, which the server
# will translate into the correct action
action = TouchAction(self)
action \
.press(x=start_x, y=start_y) \
.wait(ms=duration) \
.move_to(x=end_x, y=end_y) \
.release()
action.perform()
return self

參數

start_x, start_y : 透露表現最先滑動時的初始坐標,也便是從那里最先滑動

end_x,   end_y : 透露表現滑動后的坐標,也便是滑動到那里

duration:     : 透露表現滑動進程的時間距離,摹擬操作時,咱們最佳配置個時間距離,幸免因為代碼運轉太快,而真機或者者摹擬器反響比較慢,而操作掉敗,單元以毫秒計算

經由過程源碼,咱們發明swipe要領現實上是使用TouchAction完成的,這個類在前面咱們依然會使用,首要是摹擬一些觸屏動作

完成思緒

人人可以想象一下,日常平凡咱們滑動屏幕時,是若何操作的?例如向左滑動屏幕,咱們每每是把手放在屏幕的右邊,然后按住屏幕向左滑動,那末代碼若何曉得咱們從屏幕的哪一個地位最先訥?那便是坐標了,咱們可以先獵取屏幕的寬,高,然后按照它的比例計算鼠標的地位坐標,我這里取的肇始坐標點為屏幕寬度的0.9倍,高度的0.5倍,也許便是咱們現實中滑屏時手指的操作地位。人人可以依據上面播放的動畫察看鼠標最先的也許地位以及收場地位

接上去咱們最先摹擬動畫中鼠標的操作(人手的操作,我用的摹擬器以是有鼠標)

起首咱們經由過程get_window_size()要領獵取屏幕的寬以及高(這個要領返歸一個字典),然后計算鼠標的初始地位以及收場為止

def get_phone_size(self):
公眾”大眾公眾獵取屏幕的巨細”大眾”大眾”大眾
width = self.driver.get_window_size()[‘width’] # 獵取屏幕的寬
height = self.driver.get_window_size()[‘height’] # 獵取屏幕的高
return width, height

經由過程摹擬動畫不丟臉出,鼠標也許從肇始點坐標(屏幕寬的3/4,高的1/2)地位滑動到收場點坐標(屏幕寬1/4,高1/2),ok,接上去經由過程swipe()要領完成滑動操作

def swipe_left(self, duration=300):
“大眾”大眾公眾左滑公眾”大眾公眾
width, height = self.get_phone_size
     start = width * 0.9, height * 0.5
end = width * 0.1, height * 0.5
return self.driver.swipe(*start, *end, duration)
def swipe_right(self, duration=300):
公眾公眾”大眾右滑”大眾”大眾公眾
width, height = self.get_phone_size
start = width * 0.9, height * 0.5
end = widt電競運彩ptth * 0.1, height * 0.5 
return self.driver.swipe(*start, *end, duration)
def swipe_up(self, durati偏財運意思on):
“大眾”大眾”大眾上滑”大眾”大眾公眾
width, height = self.get_phone_size
start = width * 0.9, height * 0.5
end = width * 0.1, height * 0.5
return self.driver.swipe(*start, *end, duration)
def swipe_down(self, duration):
“大眾”大眾”大眾下滑公眾公眾公眾
width, height = self.get_phone_size
start = width * 0.9, height * 0.5
end = width * 0.1, height * 0.5
return self.driver.swipe(*start, *end, duration)

要領優化

以上每一個要領挪用一次只能滑動一次,并且不同的滑動偏向必要挪用不同的要領,使用時比較貧苦。以是咱們可以優化一下代碼,經由過程挪用一個函數完成不同次數,不同偏向的滑動

使用for輪回完成延續的滑動,引入direction參數,結合字典及反射機制,完成依據不同的參數履行不同滑動偏向的要領,傳遞num參數節制滑動的次數,詳細代碼以下

def skip_welcome_page(self, direction, num=3):
“大眾”大眾公眾
滑動頁面跳過指導動畫
:param direction: str 滑動偏向,left, right, up, down
:param num: 滑動次數
:return:
“大眾”大眾”大眾
direction_dic = {
“大眾left”偏財運2020偏財運八字大眾: “大眾swipe_left公眾,
“大眾right”大眾: “大眾swipe地下539公式_right”大眾,
“大眾up”大眾: “大眾swipe_up”大眾,
公眾down”大眾: “大眾swipe_down公眾
}
time.sleep(3)
if hasattr(self, direction_dic[direction]):
for _ in range(num):
getattr(self, direction_dic[direction])() # 使用反射履行不同的滑動要領
else:
raise ValueError(公眾參數{}不存在, direction可覺得{}恣意一個字符串”大眾.
format(direction, direction_dic.keys()))

以上便是一切滑動屏幕的操作了,詳細結果,妞妞怎麼贏咱們前面再望(你也能夠先嘗嘗)

手勢暗碼

TouchAction類

摹擬手勢暗碼的繪制咱們使用TouchAction類,這個類供應了短按壓press()要領,wait()要領,move_to()要領,release()要領,perform()要領等經常使用要領,上面我簡略申明一下這幾個要領的作用

【免責聲明】本站內容轉載自互聯網,其相關談吐僅代表作者小我私家概念盡非權勢巨子,不代表本站態度。如您發明內容存在版權成績,請提交相關鏈接至郵箱:,咱們將實時予以處置。