Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 在线观看成人小视频,久久国产精品影院,亚洲高清一区二区三区

          整合營銷服務(wù)商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          玩轉(zhuǎn)手機自動化測試

          玩轉(zhuǎn)手機自動化測試

          家好,我是皮皮。

          前言

          之前我們玩過一些手機自動化軟件,比如Airtest,ADB,通過這些軟件我們可以和自己的手機進行關(guān)聯(lián),并且使用程序來代替我們本人來操作手機,今天我們要說的是另一款給力的自動化APP,這里要介紹的并不是Windows平臺上的可執(zhí)行文件哦,而是Android平臺上的JavaScript IDE,更重要的一點就是這個工具是國人開發(fā)的,必須支持一個不是。而且AutoJs兼容性更好,傳統(tǒng)的按鍵精靈,腳本精靈,雖然上手快,門檻低,但是他們是以坐標為基礎(chǔ),很容易出現(xiàn)分辨率的問題,而AutoJs則是以控件為基礎(chǔ),因而更強大,并且我們在玩自動化時是不需要Root的;那么,廢話不多說,趕快讓我們一睹為快這款強大的IDE吧。


          一、安裝AutoJs

          為了運行Autojs腳本,我們需要使用Android平臺,這里小編選擇的是夜神模擬器,將我們下載好的AutoJs.apk安裝到夜神模擬器中,下載地址:

          https://u062.com/file/7715018-454641893

          然后我們開啟無障礙服務(wù),即可打開Autojs并正常運行,如圖:


          二、基本使用大全

          要想進行腳本的編寫,我們需要點擊藍色圓圈里的加號創(chuàng)建一個腳本文件,下面我們來創(chuàng)建一個簡單的腳本,如下:

          1.選擇器

          因為AutoJs有著JavaScript的部分特性,因此他也有選擇器可供我們選擇元素,總共有四種,如下:

          ID 選擇器
          Text 選擇器
          ClassName 選擇器
          Desc 選擇器

          2.打開應(yīng)用

          在打開之前我們需要對Autojs進行授權(quán),很簡單,如下:

          auto();//授權(quán)auto.js

          然后我們就可以打開對應(yīng)應(yīng)用,比如我想打開瀏覽器,如下:

          launchApp('瀏覽器')#打開瀏覽器

          如果我們想自定義打開的應(yīng)用了,通過輸入的方法,增加一個交互,可以這樣做,如下:

          var app=rawInput("","");
          launchApp(app);

          我們還可以添加一個控制臺,顯示我們操作的進度,如下:

          auto();
          console.show() //顯示控制臺
          log('hello') //控制臺輸出
          console.log('開啟瀏覽器') //控制臺輸出
          sleep(1000)//休眠
          var app=rawInput("",""); //自定義輸入
          launchApp(app);//運行App

          我們還可以檢查是否有Root權(quán)限,如下:

          if(auto.waitFor()){
              toastLog('有權(quán)限')
              }
            else{
             toastLog('無權(quán)限')
                }

          3.屏幕操作

          setScreenMetrics(1080,1920); #屏幕大小
          toast("歡迎大家來到我的世界,Helloworld ,520");#屏幕通知
          toastLog(‘hello’) #屏幕通知+控制臺日志
          images.requestScreenCapture() #向系統(tǒng)申請屏幕截圖權(quán)限
          images.captureScreen() #截圖
          swipe(100,200,130,320,230)#滑動屏幕,只支持安卓7.0以上
          img=images.load('讀取本地或者網(wǎng)絡(luò)圖片')#讀取
          images.save('圖片來源','圖片名')#保存
          var c=findColor(img.'顏色十六進制')#尋找對應(yīng)顏色對象
          c.x c.y #對應(yīng)顏色的橫縱坐標
          images.findColorEquals(img,color[, x, y, width, height]) #區(qū)域找色
          images.findColorInRegion(img,color[, x, y, width, height])
          device.width #取屏幕寬度
          device.height #取屏幕高度
          toast('歡迎光臨')
          if(requestScreenCapture()){
              console.log('截圖成功')
              }
            else{
                console.log('截圖失敗')
                }

          我們還可以保存網(wǎng)絡(luò)上的圖片到設(shè)備中,如:

          var pic=images.load('http://wnk5.fulitmm.cn/comm/2020053009318366378.jpg');
          images.save(pic,'/sdcard/mm.jpg')

          另外我們還可以通過找色來定位目標,如圖:

          可以看到橫縱標125。

          4.返回退出

          back() #返回
          exit() #退出

          5.休眠

          如果我們想讓程序等待一段時間,可以使用休眠功能,如下:

          sleep(3000);#休眠

          6.文本操作

          有時候我們進入應(yīng)用需要進行一些操作,這個時候我們可以通過找尋應(yīng)用中文本的位置來進行精確操作,如下:

          text('請輸入網(wǎng)址')#找文本

          7.Auto Js UI

          這里要說的是,雖然我們之前的操作比較方便,但是如果你想把這些操作做成一個界面的話,就需要用到UI了,這樣就會更方便了,像一些自動化工具,比如自動電擊器就是這個原理了,我們來看一個最簡單的例子,如下:

          "ui";
          ui.layout(
              <vertical foreground="#BBFFFF" bg='#F5F5F5'> #垂直布局加前景背景色設(shè)置
                  <input id="name" text="請輸入名字"/>#輸入框
                  <button id="one" text="按鈕1" alpha="0.6" w="200dp" textSize="10sp"/>#按鈕
                  <button class="two" w="100dp" text="按鈕2"/>
              <horizontal>#水平布局
                  <button w="auto" alpha="0.8" text="按鈕3"/>
                  <button w="*" text="按鈕4"/>
              </horizontal>
              </vertical>
             
              
          );
          ui.one.click(function(){#元素點擊事件
              var n=ui.name.getText();
              toast(n)
              })

          其實UI控件中的方法基本大部分和JavaScript的方法一樣,掌握了JavaScript你就可以非常輕松的使用UI控件了。


          三、總結(jié)

          Autojs主要就是用于我們的手機設(shè)備的腳本編寫,所以與ADB也會有很多相似之處,可以這么說,只要你掌握了ADB和JavaScript,掌握這就跟喝水那么簡單。

          對了,還要跟大家補充一句,那就是Autojs的在線官方文檔地址:

          https://hyb1996.github.io/AutoJs-Docs/#/

          上面介紹的有很多方面,如果你不方便每次都聯(lián)網(wǎng)查詢的話,可以結(jié)合咱們前幾天講的整站爬取方案哦。

          ndroid 自動化測試的工具非常多,但是目前主流使用的就那幾個,我會詳細說明他們各自的情況,你可以根據(jù)自己的需要決定使用哪款工具。

          Appium


          Appium 是目前最主流的移動測試自動化框架,不僅支持 Android 應(yīng)用,而且適用于 iOS、混合和 Web 應(yīng)用程序

          它底層完全使用了 Selenium 和 WebDriver 的 API,所以如果你之前有用過 selenium, 幾乎不需要額外的學(xué)習(xí)成本就可以使用 appium。

          appium 通過 uiautomator(API 級別 16 或更高)和 Seledroid(API 級別低于 16)支持 Android,但是你不需要具體懂這兩個框架的具體用法,appium 都已經(jīng)幫你封裝成了統(tǒng)一的使用規(guī)則。

          Appium 的最大優(yōu)勢之一是幾乎可以使用任何編程語言(例如 Java、Objective-C、JavaScript、PHP、Ruby、Python 或 C# 等)編寫 Appium 腳本

          這意味這選擇權(quán)在你,你可以使用自己最擅長的編程語言。如果你還熟悉 Selenium,那么不出意外,你可以在一天之內(nèi)上手使用。

          另外 webdriver 是一個統(tǒng)一的標準,已經(jīng)提交給了 w3c 組織,你可以基于它的協(xié)議做進一步的擴展。看看簡單的代碼:

          textFields = driver.find_elements_by_tag_name('textField')
          assertEqual(textFields[0].get_attribute("value"), "Hello")
          

          Airtest


          第二個我要推薦國產(chǎn)之光 Airtest。Airtest 項目是由網(wǎng)易游戲推出的一款自動化測試框架,項目有幾大組件:

          • Airtest:是一個跨平臺的、基于圖像識別的 UI 自動化測試框架,適用于游戲和 App,支持平臺有 Windows、Android 和 iOS
          • Poco:是一款基于 UI 控件識別的自動化測試框架,目前支持 Android 原生 app/iOS 原生 app/微信小程序,還有主流的游戲引擎,也可以在其他引擎中自行接入 poco-sdk 來使用
          • AirtestIDE:跨平臺的 UI 自動化測試編輯器,內(nèi)置了 Airtest 和 Poco 的相關(guān)插件功能,能夠使用它快速簡單地編寫 Airtest 和 Poco 代碼,甚至都可以不寫代碼。
          • AirLab:真機自動化云測試平臺,提供了非常多的手機型號和兼容性測試、海外云真機兼容性測試等服務(wù)
          • 私有化手機集群技術(shù)方案:從硬件到軟件,提供企業(yè)內(nèi)部私有化手機集群的解決方案

          使用 Airtest 的好處是中文文檔健全,對英文不好的同學(xué)支持優(yōu)化。官網(wǎng)也貼心的準備了視頻教學(xué)和演示,幫助你快速上手。

          Detox


          這個框架非常低調(diào),但是你用過一定會愛上它。

          Detox 一個非常強的 JavaScript 移動測試框架,它的測試執(zhí)行非常快速和健壯,因為在測試執(zhí)行期間不需要外部附加工具來編排和同步

          如果你優(yōu)先考慮以下因素,你可以直接選用 detox:

          • 使用 JavaScript 編程語言
          • 比其他測試自動化框架更易于調(diào)試
          • app 是 React Native 開發(fā)的,可迅速和 detox 集成
          • 在測試執(zhí)行方面比 Appium 快
          • 文檔比較容易掌握

          下面是具體的代碼,比較典型的代碼編寫方式:

          describe('HelloDetoxTest', ()=> {
          beforeEach(
          async ()=> {
          await device.reloadReactNative();
          });
          it(
          '應(yīng)該有歡迎屏幕', async ()=> {
          await expect(element(by .id('welcome'))).toBeVisible();
          });
          it(
          'should show hello Rect after tap', async ()=> {
          await element(by.id('hello_react')).tap() ;
          await expect(element(by.text('React!!!'))).toBeVisible();
          });
          it(
          '點擊后應(yīng)該顯示屏幕', async ()=> {
          await element(by.id ('detox_button')).tap();
          await expect(element(by.text('Detox!!!'))).toBeVisible();
          });
          });

          Espresso


          Espresso 是新型的的 Android 測試自動化框架,由 Google 開源,Espresso 的 API 體積小、可預(yù)測、易于學(xué)習(xí)

          你可以使用它快速編寫簡潔可靠的 Android UI 測試。

          它非常可靠,與 UI 線程同步并且速度很快,因為不需要任何睡眠(當(dāng)應(yīng)用程序空閑時,測試在同一毫秒內(nèi)運行)。

          而且通過簡單的配置,可以直接集成在 appium 中。

          總結(jié)


          這幾個工具幾乎涵蓋了所有的 Android 自動化測試技術(shù)選型側(cè)重點。在掌握好這 4 個當(dāng)中的其中一個以后,有精力你可以去研究一下其他的工具,有上百種選擇,每種都有側(cè)重和具體的場景。

          • 如果你不知道要選什么工具,用 appium
          • 如果你在自動化測試方面純小白,用 airtest
          • 如果公司用的 reactive native, 用 detox
          • Espresso 適合改善 appium 的體驗

          HTTP請求

          名稱:本屬性用于標識一個取樣器,建議使用一個有意義的名稱。
          注釋:對于測試沒有任何作用,僅用戶記錄用戶可讀的注釋信息。

          基本配置

          協(xié)議:向目標服務(wù)器發(fā)送HTTP請求時的協(xié)議,可以是http或者是https或者File ,默認值為http 。

          服務(wù)器名稱或IP :HTTP請求發(fā)送的目標服務(wù)器名稱或IP地址(注意:此處不可帶http:/或者https:/)。

          端口號:目標服務(wù)器的端口號,默認值為80 。

          方法:發(fā)送HTTP請求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。

          路徑:目標URL路徑(不包括服務(wù)器地址和端口);也可以直接寫完整路徑(上面的IP+端口就可以省略了)。

          Content encoding :內(nèi)容的編碼方式(當(dāng)PUT、POST、File和PATCH方式有效),默認值為iso8859(所以常用為UTF-8減少亂碼)。

          自動重定向:如果選中該選項,當(dāng)發(fā)送HTTP請求后得到的響應(yīng)是3xx時,JMeter 會自動重定向到新的頁面,但是Jmeter是不記錄重定向的過程內(nèi)容。查看結(jié)果集中無法查看轉(zhuǎn)發(fā)請求結(jié)果。

          跟隨重定向:Http Request取樣器的默認選項,當(dāng)響應(yīng)code是3xx時,自動跳轉(zhuǎn)到目標地址。與自動重定向不同,Jmeter會記錄重定向過程中的所有請求響應(yīng),在查看結(jié)果樹時可以看到服務(wù)器返回的內(nèi)容,如有多個跳轉(zhuǎn)則多個請求都會被記錄下來,此為默認選項。

          備注:自動重定向和跟隨重定向的區(qū)別只在于是否記錄多個跳轉(zhuǎn)的請求上
          Use keep Alive : 當(dāng)該選項被選中時,jmeter 和目標服務(wù)器之間使用 Keep-Alive方式進行HTTP通信,默認選中。

          Use multipart/from-data for HTTP POST :當(dāng)發(fā)送HTTP POST 請求時,使用Use multipart/from-data方法或者application/x-www-form-urlencoded方法發(fā)送,默認不選中。

          Browser-compatible headers:當(dāng)勾選multipart/form-data時,勾選此項會截掉http請求頭中的Content-Type和Content-Transfer-Encoding,而只發(fā)送Content-Disposition部分;

          參數(shù) : 在請求中發(fā)送URL參數(shù)。用戶可以將URL中所有參數(shù)設(shè)置在本表中,表中的每一行是一個參數(shù)值對(對應(yīng)URL中的 名稱=值)。

          -名稱:參數(shù)名

          -值:參數(shù)值

          -否是編碼:選中時,對值進行URL編碼;建議勾選,因為當(dāng)參數(shù)值內(nèi)含有ASCII Control Chars或者Non-ASCII characters或者其他符號的話,如果不勾選會導(dǎo)致發(fā)送失敗。

          消息體:放置消息體,如:post請求時,json內(nèi)容等

          文件上傳:在請求中發(fā)送文件,HTTP文件上傳可以通過這種方式模擬,參數(shù)名稱就是發(fā)送文件對應(yīng)的參數(shù),MINE Type為資源媒體類型

          高級配置

          • Client implementation(客戶端實現(xiàn))

          Implementation(實現(xiàn)):發(fā)送http請求的方式,可選項為java和HttpClient4,默認為HttpClient4;

          • Timeouts(milliseconds)

          Connect:連接超時時間,單位為毫秒;
          Response:響應(yīng)等待超時時間,單位為毫秒;

          • Embedded Resources from HTML Files(從HTML文件中嵌入資源)

          從HTML文件獲取所有內(nèi)含的資源:當(dāng)該選項被選中時,jmeter在發(fā)出HTTP請求并獲得響應(yīng)的HTML文件內(nèi)容后,還對該HTML進行解析 并獲取HTML中包含的所有資源(圖片、flash等),默認不選中,如果用戶只希望獲取頁面中的特定資源,可以在下方的Embedded URLs must match 文本框中填入需要下載的特定資源表達式,這樣,只有能匹配指定正則表達式的URL指向資源會被下載。
          Parallel downloads.:是否使用自設(shè)資源池,勾選后可設(shè)置大小;
          Number:資源池大小,默認為6。
          URLs must match:URL匹配過濾,填寫此項則只會下載與此內(nèi)容項匹配的url的資源,例如要獲取http://test.com/下的所有資源,使用正則表達式http://test.com/.*;

          • Source address(源地址)

          Source address:只用于http協(xié)議且Implementation為HttpClient4的情況。
          此屬性用于啟用IP欺騙。會重寫了這個http請求使用的默認本地IP地址。用于Jmeter主機具有多個IP地址(即IP別名、網(wǎng)絡(luò)接口、設(shè)備)的情況。該值可以是主機名、IP地址或網(wǎng)絡(luò)接口設(shè)備,如“ey0”或“l(fā)0”或“wlan0”。
          - IP/Hostname:IP /主機名以使用特定的IP地址或(本地)主機名
          - Device:選擇設(shè)備以選擇該接口的第一個可用地址,該設(shè)備可以是IPv4或IPv6。
          - Device IPV4:選擇IPv4設(shè)備來選擇名稱設(shè)備的IPv4地址(如eth0, lo, em0);
          - Device IPV6:選擇IPv6設(shè)備來選擇名稱設(shè)備的IPv4地址(如eth0, lo, em0);

          • Proxy Server(比如不想用本機的地址來發(fā)送Http請求而想使用代理服務(wù)器則填寫這部分)

          服務(wù)器名稱或IP:代理服務(wù)器的名稱或者IP地址;
          端口號:該代理的端口號;
          用戶名:使用該代理的用戶名;
          密碼:用戶密碼;

          • 其他任務(wù)

          Save response as MD5 hash:選中該項,在執(zhí)行時僅記錄服務(wù)端響應(yīng)數(shù)據(jù)的MD5值,而不記錄完整的響應(yīng)數(shù)據(jù)。在需要進行數(shù)據(jù)量非常大的測試時,建議選中該項以減少取樣器記錄響應(yīng)數(shù)據(jù)的開銷;

          get請求例子

          (1)當(dāng)get有帶參數(shù),勾中編碼時

          設(shè)置如下:

          測試結(jié)果:

          分析中文有進行編碼轉(zhuǎn)化

          中文有編碼轉(zhuǎn)化,“張三”轉(zhuǎn)碼為“%E5%BC%A0%E4%B8%89”。

          (2)當(dāng)get有帶參數(shù),不勾選編碼

          設(shè)置如下

          測試結(jié)果:

          中文沒有轉(zhuǎn)化。

          post請求例子

          post http請求

          測試結(jié)果:

          請求

          響應(yīng)


          主站蜘蛛池模板: 精品少妇人妻AV一区二区| 久久精品一区二区三区日韩| 亚洲爆乳无码一区二区三区| 日韩在线一区高清在线| 亚洲AV无码一区二区乱孑伦AS| 中文字幕人妻AV一区二区| 99精品国产一区二区三区2021| 国产精品视频一区二区三区无码| 一区二区三区免费精品视频| 夜精品a一区二区三区| 亚洲一区无码中文字幕乱码| 久久精品国产亚洲一区二区| 亚洲一区日韩高清中文字幕亚洲 | 日韩精品中文字幕视频一区 | 一区二区三区在线|日本| 在线观看精品一区| 精品国产日韩一区三区| 91视频国产一区| 国产精品福利一区二区久久| 亚洲一区二区三区久久久久| 精品无码av一区二区三区| 国产一区视频在线| 精品日韩亚洲AV无码一区二区三区| 狠狠色婷婷久久一区二区三区| 爆乳熟妇一区二区三区霸乳| 中文字幕一区二区在线播放| 国产亚洲日韩一区二区三区| 亚洲日韩精品一区二区三区无码| 高清国产精品人妻一区二区| 亚洲AV无码一区二区二三区软件 | 国产成人一区二区三区精品久久| 亚洲AV香蕉一区区二区三区| 手机福利视频一区二区| 性色av闺蜜一区二区三区| 国产在线一区二区视频| 内射白浆一区二区在线观看| 国产精品男男视频一区二区三区| 在线观看国产区亚洲一区成人 | 国模私拍一区二区三区| 亚洲国产情侣一区二区三区| 国产乱码精品一区二区三区|