微信跳一跳的自動化測試方案

2021-01-14 51Testing軟體測試網

  一、小程序:跳一跳

  本質上是棋子坐標到新物件中心的距離ds與屏幕長按時間dt的比例關係

  二、使用到的工具和用法

  1、adb工具包

  adb全名Andorid Debug Bridge. 顧名思義, 這是一個Debug工具。

  用途:

  (1)、截屏(保存為screenshot.png)

  adb shell /system/bin/screencap -p /sdcard/screenshot.png

  (2)、將截屏圖片推送到電腦(temp.png)

  adb pull /sdcard/screenshot.png E:\\testproject\\temp.png

  (3)、模擬屏幕長按

  adb shell input swipe x1 y1 x2 y2 dt

  swipe模擬的是屏幕的滑動,x1,y1到x2,y2的滑動,延遲dt秒

  2、python庫

  (1)子進程庫subprocess

  用途:執行上述adb命令

  基本使用1:subprocess.Popen(args),其中args為命令行,這個是最基本的使用,還有很多參數,不細說了。注意如果其他參數都默認,該子線程將獨立運行,即子線程間不等待。

  基本使用2:subprocess.call(args),是上面的封裝,多個子線程會按照順序依次執行。

  (2)圖像處理庫opencv

  用途:從截圖上識別棋子的坐標和新物件的中心坐標

  步驟:

  1、讀取截屏圖片,並做切割,主要是去除圖片上下其他內容的影像

  image_name = 'temp.png'

  # 圖片讀取

  img = cv2.imread(image_name)

  # 圖片切割

  roi = img[400:1000, 80:680]  

roi圖

  2、灰度處理和邊緣檢測,獲取輪廓圖

  # 灰度處理

  gray = cv2.cvtColor(roi, cv2.COLOR_BGR2GRAY)

  # canny邊緣檢測,用於識別落點

  edges = cv2.Canny(roi, 50, 100)

  edges圖

  3、識別棋子:通過識別棋子頂部的圓實現

  使用到opencv庫中的霍夫圓變換

  cv2.HoughCircles(image, method, dp, minDist, circles, param1, param2, minRadius, maxRadius)

  主要參數:

  image

  輸入 8-比特、單通道灰度圖像.

  method

  Hough 變換方式

  dp

  累加器圖像的解析度,dp的值不能比1小。

  min_dist

  該參數是讓算法能明顯區分的兩個不同圓之間的最小距離。

  param1

  用於Canny的邊緣閥值上限,下限被置為上限的一半。

  param2

  累加器的閥值。

  min_radius

  最小圓半徑。

  max_radius

  最大圓半徑。

  返回值為檢測到圓的序列,包括圓心坐標和半徑

  這裡的參數,只要半徑是19-21左右,其他需要多次嘗試後,取合適的值

  # 檢測圓心和半徑

  def findring(gray):

  circles1 = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 2,

  400, param1=100, param2=50, minRadius=19, maxRadius=21)

  # print(circles1)

  circles = circles1[0, :, :]

  circles = np.uint16(np.around(circles))

  ring = circles[0]

  return ring

  4、識別新物件的中心

  這個是通過新物件最高點(x最小)和最右端(y最大)來確定的

  分三步:

  (1)確定棋子位置後,消除棋子的輪廓。因為有的是有新物件靠的比較近或者新物件比較小。棋子高度影響對新物件坐標的識別。

  (2)確定這個edges的最高點,找到x最小的點,一般就是新物件的最高點,這時的y坐標為中心點的y坐標

  (3)從新物件最高點向右迭代,找到y最大值的點,即最右端。這時的x坐標為中心的x坐標

  def findtop(edges):

  x,y = np.where(edges==255)

  # 獲得x最小時的索引,並獲得對應的y坐標

  index = np.argmin(x)

  ymin = y[index]

  # 從該位置向右400個像素,查找y最大值,獲得對應的x坐標

  xmax = x[np.argmax(y[index:index+400])]

  return ymin,xmax

  這裡返回值中,xy坐標相反是為了視圖顯示的方便,因為cv2畫圖時候的x,y分別表示對應左邊界和上邊界的距離,和numpy讀取圖片像素矩陣的索引x,y(行和列)正好相反。 

識別結果圖

  三、其他注意點:

  1、獲得棋子上端圓心坐標後,做修正獲得棋子落點坐標

  2、新物件中心坐標獲得後,稍微向上做修正,因為隨著遊戲後期新物件變小,中心坐標要做稍微上移,增加容錯率。遊戲初期新物件比較大,問題不大。

  3、計算ds,增加係數(約2.1)計算dt。係數根據屏幕大小有區別,多嘗試幾次做相應調整。

  ds = math.sqrt((e_pos[0] - b_pos[0]) ** 2 + (e_pos[1] - b_pos[1]) ** 2)

  a = 2.1

  dt = int(a*ds)

  jump(dt)

  time.sleep(1.5)

  4、每次jump後,要等待1.5秒左右,一方面是為了某些額外加分。另一反面有時超越好友會有動畫效果,會影響新物件坐標的識別。

  四、寫在最後的最後

  分數不要刷太高,有時候排行榜不會顯示的......

相關焦點

  • 紅手指跳一跳怎麼用_紅手指跳一跳攻略
    紅手指跳一跳怎麼用?關於微信跳一跳高分神器紅手指跳一跳,想必還是有很多玩家不知道的,接下來隨小編一起看看吧!   紅手指跳一跳攻略  第一步:下載安裝紅手指跳一跳  第二步:註冊登錄紅手指,領取一臺雲手機  第三步:進入紅手指雲手機,在雲手機應用市場搜索「微信
  • 微信跳一跳上面的字母英文ly有什麼含義
    導 讀 有很多人會在八卦的問,麼微信跳一跳字母意思是什麼?微信跳一跳上面的字母英文ly有什麼含義?
  • 玩微信跳一跳易得乾眼症 眼科專家:一張圖看懂所有常見眼病
    近期,騰訊舉辦的2018微信公開課上,騰訊高級副總裁、「微信之父」張小龍現身,還在現場玩起了最近微信火熱的小遊戲「跳一跳」,並在現場達到了近1000分。不過張小龍表示,自己這段時間「跳一跳」最好的成績玩到了6000多分,小編瞬間拜服!
  • 微信跳一跳輔助教程,跳出你想要的高分!
    近日,微信新上線的小程序遊戲「跳一跳」非常有趣,玩法簡單,上手很快,但是得高分很難,上個三位數就得辛辛苦苦跳半天。那麼如何才能跳出更高的高分,網上的各種攻略看得眼花繚亂,用下來效果也不好。今日就給大家詳細介紹一種簡單易懂的方法,教你如何用輔助腳本來刷新高分。首先介紹一下遊戲得分規則,跳一個方塊加1分。
  • 紅手指跳一跳iOS版使用教程 紅手指跳一跳怎麼玩
    導 讀 跳一跳是最近很火的一款遊戲,大家應該都在微信中玩過。從網上看到一些小夥伴會用紅手指這款腳本輔助,來讓自己在遊戲中獲得高分。
  • 除了跳一跳,這十款微信小遊戲也好玩到讓你欲罷不能
    不知道近期大家的朋友圈還有沒有被「跳一跳」這款遊戲刷屏,不得不說,微信的號召力實在是太強了。進入2018年後,微信正式推出了小程序中的小遊戲版塊,除了跳一跳之外,騰訊和第三方開發者陸續推出了不少輕量級的遊戲產品,今天我們就來為你推薦十款。
  • 還記得張小龍力薦的微信小遊戲「跳一跳」嗎?騰訊真的要辦比賽了
    「跳一跳」是微信一整個2018年的開局之作。 今年初的微信公開課上,微信之父張小龍人還沒出場,就先把自己的手機屏展示了出來。他打開了一局「跳一跳」遊戲,隨手打了967分。張小龍說,自己因為要演講而緊張了,沒發揮好。而他當時的最高水準是六千多分,「花了很多時間去練習」,獲得稱號「無聊大師」「立地成佛」。
  • 盤古團隊證實:微信小遊戲「跳一跳」改分漏洞仍在,這是最新攻略 |...
    1 月 2 日下午,著名安全團隊「盤古」的安全專家向雷鋒網宅客頻道證實,微信小遊戲「跳一跳」改分漏洞仍在,此前流傳的「微信已補漏洞」是指已經修補了微信小遊戲「跳一跳」的原始碼下載漏洞。為此,「盤古」旗下的移動安全威脅數據平臺 Janus 為雷鋒網出具了一份最新改分攻略:一、改分關鍵步驟電腦安裝抓包軟體,手機設置https代理到電腦通過抓包軟體,抓包拿到微信的sesseion_id將sesseion_id寫入改分腳本,提交改分請求二、詳細教程
  • 微信跳一跳暴露的生活真相,比分數重要100000倍!
    新年這幾天,微信上一款叫「跳一跳」的遊戲刷屏了朋友圈。玩法非常簡單:只憑一根手指,按住屏幕,讓棋子從一個方塊跳到另一個方塊。按壓時間越長,棋子跳的距離就越遠。儘管入門不難,但是想拿高分,卻遠遠沒那麼簡單。為了讓榜單上的排名更靠前,網絡上還出現了這樣的神操作。
  • 微信跳一跳各種刷分方法介紹 繪製函數圖形精準跳躍
    最近,微信小遊戲跳一跳火爆了朋友圈,幾乎每一個人都在苦惱著自己的分數與那幾個方格作鬥爭,看著朋友圈排行榜中那一個兩個望不可及的高分,只能默默的苦惱自己的手殘,但是這些分數依靠手動跳出來是很難的,下面小編給大家說說幾種常見的刷分方法。一、依靠節奏來跳
  • 跳一跳催生外掛產業,手遊成下一個黑產受害者?
    (網絡跳一跳物理外掛教程視頻截圖)跳一跳是微信最新版中上線的首款小程序遊戲,憑藉微信高權重的推薦及簡單易懂的玩法,瞬間刷爆朋友圈,熱度超過當年全民打飛機。為了能在排行榜中進入前列,許多網友不惜挑燈夜跳,整宿的按壓屏幕就為了那點虛榮心。
  • 今天,你還「跳一跳」嗎?——從過氣網紅遊戲「跳一跳」談起丨語言...
    前段時間,一款名為「跳一跳」的微信小程序幾乎一夜之間刷遍了朋友圈和微博熱搜榜。一時間,1000分大神,跳一跳高分秘籍(如特殊方塊,聽音法,手指勻速移動法等),甚至是外掛程序層出不窮。跳一跳特殊方塊(圖片來源於網絡)有讀者也許略感疑惑,小編怎麼今天想起這款過氣網紅遊戲來了?難道其中還隱藏著什麼語言學現象?其實,今天我們想談的是這款小程序的名稱,從「跳一跳」來聊聊漢語中的動詞重疊(verbal reduplication)現象。
  • 公務員體測縱跳摸高最多測3次 一考生被指跳4次
    這是一場事關已經通過筆試的考生能否進入到招錄面試過程的重要一關。  「『縱跳摸高』當場測試不超過三次」,這個測試規則,考生們自然爛記於心。然而在測試現場,卻出現了一名考生連跳四次的一幕。  自稱知情人的小伍(化名)稱,他曾就此事致電福建省監獄管理局的工作人員諮詢此舉是否違規?從中他得知這位考生體能測試成績有效,並且裁判所認定的是第二次測試成績。
  • 「跳一跳」盒子隱藏的含義這麼奇妙!99%的人都不知道~
    「跳一跳」當屬現在最火的遊戲了每周一的排名更新讓許多人熬夜的刷分數玩了這麼久的「跳一跳」那你知道盒子背後的含義嗎?WEDESIGNWEDESIGN代表微信設計中心,design在英語中就是設計的意思。微信很多標誌都出自微信官方設計團隊。
  • 飛船SN6第二跳準備中,SpaceX公開:飛船SN5第一跳時引擎管線著火
    ,大約需要兩個星期地面測試,第二跳時間預計在9月初,如果順利的話,8月底也有可能。將進行第二跳,但是現在SN5卻被運至星際飛船工廠進行改造,可能有朋友不太理解了,為何不直接讓SN5進行第二次跳,反而要把停放在星際飛船工廠內的SN6運到發射架,又把發射架附近的SN5運回星際飛船工廠呢?
  • Chrome暗藏的恐龍跳一跳,已經被AI輕鬆掌握了
    換個角度一想,牆內還能有更多的Play時間哦~你有沒有注意到畫面裡那個小恐龍?當你遇到打不開網頁的時候,只需要再點擊一下這個頁面(手機),或者按下空格(電腦),隨著小恐龍輕輕一跳——一個新世界開啟了。這個「恐龍跳一跳」其實是藏在Chrome瀏覽器裡好多年的一個彩蛋。小恐龍是一隻霸王龍(T-Rex)。
  • 到了月球後跳一跳會怎樣?太空人親口說出:跳之後差點沒命
    要知道,人類第一次飛出地球踏上太空還是在上個世紀的60年代,當時的人們無不為此驚呼,踏上月球的一小步這也意味著我們人類航天航空發展裡程碑上的一大步。而第一次踏上月球的國家也是美國,雖然後期俄羅斯、中國都相繼的成功送各自的太空人上天,但是不可否認的是美國確實是第一個。而且到現如今,月球仍然是我們人類唯一一個真正踏上去的星球。
  • 7000多米高空 科學分析阿湯哥這一跳有多玩命
    7000多米高空,每秒90米的降速  伴隨低溫缺氧,距地約600米低空開傘  科學分析阿湯哥這一跳
  • 月球上跳一跳很危險嗎?阿波羅太空人親口承認,跳了一下差點沒命
    杜克對此十分支持,沒想到杜克輕輕一跳,就跳上了兩米的高度,隨後失去平衡翻滾落地,而且是要命的背部著地。這輕輕的一跳,幾乎成為了杜克一生中最接近死亡的時刻。之所以會出現這樣的局面,是因為月球上是一個低重力的環境,任何一個人在月球上,都能取得比專業跳高運動員更好的成績,但如何落地就是個麻煩事了。
  • 防跳迴路接線圖解
    2、防跳迴路的典型接線   常用防跳迴路有串聯式防跳迴路、並聯式防跳迴路、彈簧儲能式防跳迴路、跳閘線圈輔助接點式防跳迴路等。國產斷路器多採用串聯式防跳迴路 串聯式防跳迴路最合理,應用也最廣泛,它除具有防跳功能外,還具有防止保護出口接點斷弧而燒毀的優點,這也是應用微機保護裝置不可缺少的技術條件。