版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第4章App自動化測試《自動化測試應用教程(Web+App)》學習目標/Target掌握搭建App自動化測試環(huán)境的方式,能夠搭建App自動化測試環(huán)境掌握adb調試工具和uiautomatorviewer工具的使用方式,能夠獲取App的信息并定位App界面中的元素掌握常見的驅動操作的使用,能夠獲取手機屏幕分辨率、手機屏幕截圖和手機網(wǎng)絡類型等信息掌握手勢操作的使用方式,能夠實現(xiàn)輕敲、按下和抬起、等待、長按、移動、滑動和拖曳等操作掌握Toast消息處理方式,能夠獲取Toast消息章節(jié)概述/Summary5G時代已經(jīng)到來,它推動著移動互聯(lián)網(wǎng)更快速的發(fā)展。如今,App(應用程序)(如微信、淘寶等)就像是人們的日常生活小助手,憑借著自身的智能性、及時性和高效的互動性等特點備受大家的喜愛。但是面對不同版本的移動設備(如手機、平板電腦等),App在應用時會產(chǎn)生不同的缺陷,為了讓App可以在更多不同版本的移動設備上正常運行,需要通過測試來保證App的質量,下面將對App自動化測試的內容進行詳細講解。目錄/Contents0102搭建App自動化測試環(huán)境App自動化測試常用工具03驅動操作04手勢操作05Toast消息處理搭建App自動化測試環(huán)境4.14.1.1安裝JDK1.8
先定一個小目標!掌握JDK1.8的安裝,能夠獨自下載與安裝JDK1.8并配置Java環(huán)境變量4.1.1安裝JDK1.8JDK(JavaDevelopmentKit)是Java語言的軟件開發(fā)工具包,所以搭建Java環(huán)境的第一步是下載并安裝JDK1.8(當前較穩(wěn)定的版本),第二步是配置Java環(huán)境變量。4.1.1安裝JDK1.8訪問JDK官方下載網(wǎng)站,進入JDK下載界面,找到Java8并選擇“Windows”選項,然后單擊頁面中的“jdk-8u311-windows-x64.exe”即可下載JDK1.8的安裝包,如右圖所示。(1)下載并安裝JDK1.84.1.1安裝JDK1.8下載完jdk-8u311-windows-x64.exe文件后,雙擊該文件,會進入JDK1.8的安裝頁面。由于JDK1.8的安裝過程比較簡單,沒有任何特殊的操作,直接采取默認的安裝方式并單擊“下一步”即可完成JDK1.8的安裝。4.1.1安裝JDK1.8首先新建系統(tǒng)變量并設置變量名為“JAVA_HOME”,變量值為JDK1.8所在的安裝路徑,如右圖所示。(2)配置Java環(huán)境變量4.1.1安裝JDK1.8然后配置CLASSPATH環(huán)境變量,將變量名設置為CLASSPATH,將變量值設置為“.;JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar”,如下圖所示。4.1.1安裝JDK1.8最后配置Path變量。在“環(huán)境變量”對話框中的“系統(tǒng)變量”下方找到變量名為Path的變量,單擊“編輯”按鈕,會彈出“編輯系統(tǒng)變量”對話框,在該對話框中的變量值后面添加“;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;”,如下圖所示。4.1.1安裝JDK1.8接下來需要驗證Java的環(huán)境變量是否配置成功。打開cmd命令窗口,在該窗口中輸入“java-version”并按下“Enter”鍵,如下圖所示。
先定一個小目標!掌握AndroidSDK的下載,能夠獨自下載AndroidSDK并配置Android的環(huán)境變量4.1.2下載AndroidSDK4.1.2下載AndroidSDK由于創(chuàng)建Android模擬器時,需要使用AndroidSDK,所以在創(chuàng)建Android模擬器之前,需要下載AndroidSDK,不同版本的SDK對應不同的Android系統(tǒng)版本。4.1.2下載AndroidSDK首先訪問Android開發(fā)工具的官方下載網(wǎng)站,然后在該網(wǎng)站中單擊“AndroidSDK工具”,在彈出的菜單列表中單擊“SDK”,頁面中會顯示SDK的相關信息,根據(jù)需求選擇對應版本下載即可,如右圖所示。4.1.2下載AndroidSDK首先將下載的SDK壓縮包解壓到本地文件夾中,然后配置Android環(huán)境變量,便于后續(xù)使用adb調試工具和uiautomatorviewer工具。新建系統(tǒng)變量,將變量名設置為“ANDROID_HOME,將變量值設置為”E:\sdk“(SDK所在的路徑)如下圖所示。4.1.2下載AndroidSDK然后將SDK解壓后的platform-tools和tools文件夾的路徑添加到系統(tǒng)環(huán)境變量Path中,如下圖所示。4.1.2下載AndroidSDK最后還需要驗證Android的環(huán)境變量是否配置成功。打開cmd命令窗口,在該窗口中輸入“adbversion”,并按下“Enter”鍵,如下圖所示。
先定一個小目標!掌握Android模擬器的創(chuàng)建,能夠獨自下載和創(chuàng)建Genymotion模擬器4.1.3創(chuàng)建Android模擬器4.1.3創(chuàng)建Android模擬器Android模擬器是一款能在計算機上運行并模擬Android手機或平板電腦設備的軟件,它能夠安裝、使用或卸載Android應用程序(App)。Android模擬器分為AndroidStudio工具(開發(fā)Android應用程序的工具)自帶的原生模擬器和第三方模擬器兩種。目前市場上有很多第三方模擬器,例如Genymotion模擬器、夜神模擬器、雷電模擬器等,在這些模擬器中Genymotion模擬器的功能更強大一些,它可以根據(jù)不同的SDK版本創(chuàng)建不同版本的Android模擬器。下面將選擇Genymotion模擬器進行下載與創(chuàng)建。4.1.3創(chuàng)建Android模擬器4.1.3創(chuàng)建Android模擬器訪問Genymotion的官方網(wǎng)站,單擊“Desktopversion”按鈕,進入Genymotion的下載頁面,選擇帶有VirtualBox的Windows版本的Genymotion進行下載即可,如下圖所示。(1)下載Genymotion模擬器4.1.3創(chuàng)建Android模擬器下載好Genymotion安裝包后,雙擊該安裝包進行安裝,在安裝過程中不需要更改任何配置,直接單擊“下一步”按鈕,按照默認方式安裝即可。Genymotion安裝完成后,會彈出“歡迎使用OracleVMVirtualBox6.1.14安裝向導”對話框,如下圖所示。(2)安裝Genymotion模擬器4.1.3創(chuàng)建Android模擬器第一次使用Genymotion時,首先需要根據(jù)頁面提示注冊賬號,然后使用成功注冊的賬號登錄Genymotion,進入“Genymotion”窗口,在該窗口中首先單擊“Genymotion”選項,然后單擊“Settings”,進入“Settings”對話框設置AndroidSDK路徑,如下圖所示。(3)設置AndroidSDK路徑4.1.3創(chuàng)建Android模擬器對話框設置AndroidSDK路徑。“Settings”窗口中的設置完成后,回到“Genymotion”窗口中創(chuàng)建Android模擬器。單擊“Genymotion”窗口中的按鈕,進入選擇模擬器對話框,根據(jù)測試的需求選擇創(chuàng)建不同API版本或屏幕尺寸的模擬器,如下圖所示。(4)創(chuàng)建Android模擬器4.1.3創(chuàng)建Android模擬器以創(chuàng)建API24,屏幕尺寸為768像素×1280像素的模擬器為例,首先單擊選擇模擬器對話框中的“CustomPhone”選項,然后單擊“NEXT”按鈕,進入模擬器安裝對話框,單擊該對話框中的
“INSTALL”按鈕即可進行安裝,如下圖所示。4.1.3創(chuàng)建Android模擬器安裝完成后,回到“Genymotion”窗口,該窗口中顯示了已創(chuàng)建好的模擬器,此時可以通過單擊模擬器后面的
按鈕,在彈出的列表中選擇“Start”選項來開啟模擬器,如下圖所示。
先定一個小目標!掌握Appium與Appium-Python-Client庫的安裝,能夠獨自安裝Appium與Appium-Python-Client庫4.1.4安裝Appium與Appium-Python-Client庫Appium是一個開源工具,用于測試iOS系統(tǒng)、Android系統(tǒng)和Windows系統(tǒng)上安裝的應用程序,除此之外,Appium是跨平臺的,可以使用一套API編寫的測試腳本測試不同平臺上的應用。Appium-Python-Client庫主要用于提供編寫Python語言的腳本代碼時需要的方法。4.1.4安裝Appium與Appium-Python-Client庫首先訪問Appium官方網(wǎng)站,然后單擊“DownloadAppium”按鈕,進入Appium的下載頁面,在該頁面單擊“Appium-windows-1.21.0.exe”即可下載Appium的安裝文件,如下圖所示。1.安裝Appium4.1.4安裝Appium與Appium-Python-Client庫1324Appium的具體安裝過程如右圖所示。4.1.4安裝Appium與Appium-Python-Client庫Appium-Python-Client庫的安裝有2種方式,第1種是通過pip命令進行安裝,第2種是通過PyCharm工具進行安裝。(1)通過pip命令安裝Appium-Python-Client庫pipinstallAppium-Python-Client打開cmd命令窗口,輸入如下命令,并按下“Enter”鍵會自動安裝Appium-Python-Client庫。2.安裝Appium-Python-Client庫4.1.4安裝Appium與Appium-Python-Client庫安裝完Appium-Python-Client庫后,可以在cmd命令窗口中輸入“piplist”命令并按下“Enter”鍵,驗證Appium-Python-Client庫是否安裝成功,如下圖所示。4.1.4安裝Appium與Appium-Python-Client庫(2)通過PyCharm工具安裝Appium-Python-Client庫通過PyCharm工具安裝Appium-Python-Client的具體操作過程如下圖所示。4.1.4安裝Appium與Appium-Python-Client庫App自動化測試常用工具4.24.2.1adb調試工具
先定一個小目標!掌握adb調試工具使用,能夠靈活應用adb命令獲取App的包名和界面名4.2.1adb調試工具adb(AndroidDebugBridge,
Android調試橋
)是一個用于管理Android設備(如模擬器、手機等)的調試工具。當它被啟動時,可以直接在cmd命令窗口中使用adb命令對Android設備進行操作或獲取設備上安裝的App的信息。該工具位于SDK安裝目錄下的platform-tools文件夾中。4.2.1adb調試工具當進行App自動化測試時,經(jīng)常會使用一些adb命令來啟動或停止adb服務器、獲取App的日志信息、連接或斷開Android設備等,下面列舉一些常用的adb命令,如下表所示。方法說明adbstart-server啟動adb服務器adbkill-server停止adb服務器adblogcat獲取日志信息adbconnectIP地址連接某個設備adbdisconnectIP地址斷開某個設備的連接adbinstallapk文件路徑在手機上安裝Appadbuninstall包名卸載手機上的Appadbdevices獲取當前計算機已經(jīng)連接的設備和對應的設備號adbshell進入Android手機內部的Linux系統(tǒng)命令行中adbshellamstart-w包名/界面名獲取App啟動時間4.2.1adb調試工具方法說明adbshelldumpsyswindowwindows|findstrmFocusedApp獲取包名和界面名adbshelldumpsyswindowwindows|findstr“userdApp”獲取包名和界面名adbpush計算機的文件路徑手機的文件夾路徑將文件從計算機發(fā)送至手機adbpull手機的文件路徑計算機的文件夾路徑將文件從手機發(fā)送至計算機adb--help查看adb幫助4.2.1adb調試工具在進行App自動化測試時,需要將App安裝到模擬器或真機上才能夠進行測試,通常有2種安裝方式。第1種方式:通過adb命令進行安裝,打開cmd命令行窗口,輸入“adbinstallapk文件路徑”并按下鍵盤上的“Enter”鍵即可。第2種方式:直接將需要測試的應用程序apk文件拖入模擬器中,或者在真機上直接下載apk文件進行安裝。4.2.1adb調試工具有時候將apk文件直接拖進模擬器會彈出Error對話框,該對話框中提示需要在模擬器上安裝GenymotionARM插件,如下圖所示。注意4.2.1adb調試工具在Genymotion官方網(wǎng)站中下載GenymotionARM插件,將下載好的GenymotionARM插件拖拽到模擬器上,會彈出“Fileinstallationwarning”對話框,單擊該對話框中的“OK”按鈕,會彈出“Information”對話框,該對話框提示GenymotionARM插件安裝成功,單擊“OK”按鈕即可,如下圖所示。4.2.2uiautomatorviewer工具
先定一個小目標!掌握uiautomatorviewer工具使用,能夠使用uiautomatorviewer工具獲取App的信息與定位App界面中的元素4.2.2uiautomatorviewer工具uiautomatorviewer是AndroidSDK自帶的一個元素定位工具,它可以通過截屏并分析XML布局文件的方式來查看App中的界面控件信息,例如,查看App中界面的布局、組件、屬性等信息。uiautomatorviewer工具位于Androidsdk目錄下的tools\bin子目錄中。4.2.2uiautomatorviewer工具雙擊uiautomatorviewer.bat文件,就可以啟動uiautomatorviewer工具,啟動該工具后會彈出一個cmd命令窗口和UIAutomatorViewer窗口,如下圖所示。4.2.2uiautomatorviewer工具需要注意的是,在使用uiautomatorviewer工具的過程中不能關閉cmd命令窗口,如果關閉該窗口,則UIAutomatorViewer窗口也會自動關閉。注意4.2.2uiautomatorviewer工具uiautomatorviewer工具的啟動界面可以分為4個區(qū)域,這4個區(qū)域的具體介紹如下。區(qū)域1:功能按鈕區(qū)。該區(qū)域一共有4個圖標,這4個圖標從左到右的功能依次為打開已保存的布局圖片、獲取詳細布局信息、獲取簡潔布局信息、保存布局。在App自動化測試過程中,通常會單擊該區(qū)域中的第2個圖標,從而獲取App界面的詳細布局信息。區(qū)域2:截圖區(qū)。該區(qū)域用于顯示當前啟動的Android設備屏幕顯示的布局圖片。區(qū)域3:布局區(qū)。該區(qū)域以XML樹的形式顯示App界面的控件布局。區(qū)域4:控件屬性區(qū)。當用戶單擊界面上的某一個控件時,該區(qū)域會顯示控件的屬性信息。4.2.2uiautomatorviewer工具下面演示使用啟動的uiautomatorviewer工具來定位Android模擬器中通訊錄App的新增聯(lián)系人界面中的姓名輸入框信息。首先啟動Android模擬器,打開模擬器中的通訊錄App,在App中打開新增聯(lián)系人界面,如右圖所示。4.2.2uiautomatorviewer工具單擊UIAutomatorViewer窗口功能按鈕區(qū)的第2個圖標
,此時截圖區(qū)會顯示新增聯(lián)系人界面的布局圖片,如下圖所示。以XML樹的形式顯示了姓名輸入框的布局信息控件屬性區(qū)域顯示了姓名輸入框控件的屬性信息4.2.2uiautomatorviewer工具需要注意的是,當?shù)谝淮螁螕鬠IAutomatorViewer窗口功能按鈕區(qū)的第2個圖標時,程序可能會彈出“ErrorobtainingDeviceScreenshot”對話框,提示找不到Android設備,如下圖所示。注意4.2.2uiautomatorviewer工具為了解決找不到Android設備的問題,首先關閉Android設備,然后打開Windows任務管理器窗口,在該窗口中選擇名稱為adb.exe*32的進程,單擊“結束進程”按鈕關閉adb服務器的進程即可,如下圖所示。驅動操作4.34.3.1獲取手機屏幕分辨率
先定一個小目標!掌握常見的App驅動操作的使用,能夠獲取手機屏幕分辨率4.3.1獲取手機屏幕分辨率手機屏幕分辨率是指屏幕上橫向像素點與縱向像素點數(shù)量的乘積。當對App進行自動化測試時,有時需要根據(jù)Android設備的屏幕分辨率計算單擊或滑動操作的具體坐標信息,因此需要在自動化測試時獲取手機屏幕的分辨率。4.3.1獲取手機屏幕分辨率get_window_size(windowHandle='current')在獲取手機屏幕分辨率時,需要調用get_window_size()方法,該方法的語法格式如下。get_window_size()方法的返回值是字典類型,該返回值中有兩個key,width和height,分別為手機屏幕的寬度和高度,用來表示手機屏幕的分辨率。4.3.1獲取手機屏幕分辨率下面以Genymotion模擬器為例,演示如何通過get_window_size()方法獲取模擬器屏幕的分辨率,具體代碼如下。fromappiumimportwebdriver#初始化App的配置信息des_cap=dict()des_cap["platformName"]="Android"des_cap["platformVersion"]="7.0"des_cap["deviceName"]="****"driver=webdriver.Remote("http://localhost:4723/wd/hub",des_cap)#輸出獲取的模擬器屏幕分辨率信息print(driver.get_window_size())driver.quit()定義字典參數(shù)分別用于設置平臺的名稱、版本號和設備(模擬器)名稱4.3.2獲取手機屏幕截圖
先定一個小目標!掌握常見的App驅動操作的使用,能夠獲取手機屏幕截圖4.3.2獲取手機屏幕截圖當對App進行自動化測試時,可能會出現(xiàn)執(zhí)行完自動化測試腳本后App沒有進行任何操作,同時腳本代碼也沒有輸出任何報錯信息,此時需要將操作后的關鍵信息進行截圖保存,通過這些截圖信息可以幫助測試人員分析測試腳本或App出現(xiàn)了什么問題。4.3.2獲取手機屏幕截圖get_screenshot_as_file(filename)SeleniumWebDriver提供了一個獲取手機屏幕截圖的方法get_screenshot_as_file(),該方法可以將手機屏幕截圖保存到指定的文件夾中,該方法的語法格式如下。get_screenshot_as_file()方法中的參數(shù)filename是截圖的文件路徑和名稱,需要注意的是,此處的文件路徑必須是存在的,即提前創(chuàng)建好的,截圖文件的后綴名為.png。4.3.2獲取手機屏幕截圖下面以Genymotion模擬器為例,演示如何獲取并保存短信App中短信界面的截圖,并將該截圖保存到項目根目錄的img文件夾中,具體代碼如下。importtimeimportsleepfromappiumimportwebdriverdes_cap=dict()des_cap["platformName"]="android"des_cap["platformVersion"]="7.0"des_cap["deviceName"]="****"des_cap["appPackage"]="com.android.messaging"des_cap["appActivity"]=".ui.conversationlist.ConversationListActivity"driver=webdriver.Remote("http://localhost:4723/wd/hub",des_cap)sleep(2)#獲取手機短信界面截圖driver.get_screenshot_as_file("img/message.png")driver.quit()獲取短信App的包名和界面名表示將截圖命名為message.png,并將該截圖保存到項目根目錄的img文件夾中4.3.3獲取手機網(wǎng)絡類型
先定一個小目標!掌握常見的App驅動操作的使用,能夠獲取手機網(wǎng)絡類型4.3.3獲取手機網(wǎng)絡類型我們在使用Wi-Fi觀看視頻時,如果Wi-Fi突然斷開,此時手機上就會提示W(wǎng)i-Fi已斷開,是否切換為數(shù)據(jù)流量繼續(xù)播放視頻的信息,這個信息只有App程序獲取手機網(wǎng)絡類型時才會提示。在測試腳本代碼中獲取手機網(wǎng)絡類型的屬性如下。work_connection4.3.3獲取手機網(wǎng)絡類型在自動化測試腳本代碼中,還可以通過調用set_network_connection()方法設置手機的網(wǎng)絡類型,該方法的語法格式如下。driver.set_network_connection(connectionType)set_network_connection()方法中的參數(shù)connectionType表示網(wǎng)絡連接的類型,默認是int類型的數(shù)據(jù)。例如,該值設置為2時,表示使用的網(wǎng)絡是Wi-Fi;該值設置為4時,表示使用的網(wǎng)絡是數(shù)據(jù)流量;該值設置為6時,表示使用的網(wǎng)絡是Wi-Fi或數(shù)據(jù)流量(有Wi-Fi時,默認使用Wi-Fi,無Wi-Fi時,默認使用數(shù)據(jù)流量)。4.3.3獲取手機網(wǎng)絡類型下面以Genymotion模擬器為例,演示如何獲取并設置模擬器的網(wǎng)絡類型,具體代碼如下。fromappiumimportwebdriverdes_cap=dict()des_cap["platformName"]="Android"des_cap["platformVersion"]="7.0"des_cap["deviceName"]="****"driver=webdriver.Remote("http://localhost:4723/wd/hub",des_cap)#獲取網(wǎng)絡類型print(work_connection)#設置網(wǎng)絡類型driver.set_network_connection(4)print(work_connection)driver.quit()4.3.4模擬手機鍵盤操作
先定一個小目標!掌握常見的App驅動操作的使用,能夠模擬手機鍵盤操作4.3.4模擬手機鍵盤操作如果想要通過腳本代碼實現(xiàn)手機鍵盤的不同操作,可使用Appium提供的press_keycode()方法,根據(jù)該方法中傳遞的不同參數(shù),可以模擬手機鍵盤的不同操作,例如模擬按下手機返回鍵、撥號鍵等操作。press_keycode()方法的語法格式如下。press_keycode(keycode:int,metastate=None,flags=None)press_keycode()方法中有3個參數(shù),第1個參數(shù)keycode表示鍵值;第2個參數(shù)metastate表示控制按鍵,例如鍵盤上的“Alt”鍵、“Shift”鍵等,默認值為None;第3個參數(shù)flags表示按鍵的標識,默認值為None。4.3.4模擬手機鍵盤操作press_keycode()方法是以傳入鍵值的形式來模擬鍵盤的不同操作,其常用的鍵值及說明如下表所示。方法說明press_keycode(3)表示按下“Home”按鍵press_keycode(4)表示按下返回鍵press_keycode(5)表示按下?lián)芴栨Ipress_keycode(6)表示按下掛機鍵press_keycode(24)表示按下音量增加鍵press_keycode(25)表示按下音量減小鍵press_keycode(27)表示按下拍照鍵press_keycode(66)表示按下回車鍵press_keycode(82)表示按下菜單鍵press_keycode(84)表示按下搜索鍵4.3.4模擬手機鍵盤操作下面以Genymotion模擬器中的設置界面為例,演示如何模擬鍵盤上的返回鍵功能,具體代碼如下。[單擊查看源碼]4.3.5手機通知欄操作
先定一個小目標!掌握常見的App驅動操作的使用,能夠操作手機通知欄4.3.5手機通知欄操作在使用Android手機時,有時會突然彈出一條新聞或短信消息,這些消息都顯示在手機的通知欄中,用戶可以通過從手機頂部向下滑動來打開通知欄并查看通知欄中的消息。在App自動化測試過程中,如果想要查看手機的通知欄消息,可使用Appium提供的打開手機通知欄操作的方法open_notifications(),該方法的語法格式如下。open_notifications()Appium中沒有提供關閉手機通知欄操作的方法,在使用手機時,通常是通過從下往上滑動或按下返回鍵關閉通知欄。4.3.5手機通知欄操作下面以Genymotion模擬器為例,演示如何通過open_notifications()方法打開模擬器的通知欄,具體代碼如下。fromtimeimportsleepfromappiumimportwebdriverdes_cap=dict()des_cap["platformName"]="android"des_cap["platformVersion"]="7.0"des_cap["deviceName"]="****"driver=webdriver.Remote("http://localhost:4723/wd/hub",des_cap)#打開通知欄driver.open_notifications()#模擬按下返回鍵的操作關閉通知欄driver.press_keycode(4)sleep(2)driver.quit()手勢操作4.44.4.1輕敲操作
先定一個小目標!掌握手勢操作的使用方式,能夠實現(xiàn)輕敲操作4.4.1輕敲操作輕敲操作是指模擬手指對某個元素或點按下并快速抬起的操作,實現(xiàn)輕敲操作時需要調用tap()方法,該方法的語法格式如下。tap(element=None,x=None,y=None)tap()方法中的參數(shù)element表示被輕敲的元素對象,參數(shù)x表示被輕敲的點的x軸坐標,參數(shù)y表示被輕敲的點的y軸坐標。tap()方法中的3個參數(shù)的默認值均為None。4.4.1輕敲操作如果輕敲的是某個元素,則tap()方法中只需要傳遞該元素對象。假設輕敲的元素對象為element,則實現(xiàn)輕敲元素的具體示例代碼如下。TouchAction(driver).tap(element).perform()上述示例代碼中的perform()方法用于執(zhí)行tap()方法。4.4.1輕敲操作如果輕敲的是某個點,則tap()方法中只需要傳遞該點的坐標。假設輕敲的點坐標為(100,100),則實現(xiàn)輕敲一個點的具體示例代碼如下。TouchAction(driver).tap(x=100,y=100).perform()通過tap()方法實現(xiàn)的輕敲操作與通過click()方法實現(xiàn)的單擊操作類似,這兩個方法實現(xiàn)的操作都屬于單擊操作,不同的是通過click()方法實現(xiàn)的單擊操作會延遲200ms~300ms。4.4.1輕敲操作下面以Genymotion模擬器中的“設置”界面為例,演示如何通過tap()方法實現(xiàn)輕敲“設置”界面上的“流量使用情況”文本元素的操作,具體代碼如下。[單擊查看源碼]多學一招打開模擬器的指針位置通常,在剛創(chuàng)建的模擬器中指針位置默認是關閉的狀態(tài),在進行App自動化測試時,有時候需要獲取界面元素的坐標值,此時可以通過打開模擬器的“設置”界面,在該界面滑動至底部,單擊“開發(fā)者選項”文本,進入“開發(fā)者選項”界面,然后單擊
開啟指針位置,即可在模擬器頂部查看坐標值,如右圖所示。4.4.2按下和抬起操作
先定一個小目標!掌握手勢操作的使用方式,能夠實現(xiàn)按下和抬起操作4.4.2按下和抬起操作1.按下操作按下操作是模擬手指按壓屏幕上某個元素或點的操作,實現(xiàn)按下操作時需要調用press()方法,該方法的語法格式如下。press(el=None,x=None,y=None)press()方法中參數(shù)el表示被按下的元素對象,參數(shù)x表示被按下的點的x軸坐標,參數(shù)y表示被按下的點的y軸坐標。press()方法中的3個參數(shù)的默認值均為None。4.4.2按下和抬起操作如果按下的是某個元素,則press()方法中只需要傳遞該元素對象。假設按下的元素對象為element,則實現(xiàn)按下操作的具體示例代碼如下。TouchAction(driver).press(element).perform()如果按下的是某個點,則press()方法中只需要傳遞該點的坐標。假設按下的點坐標為(80,100),則實現(xiàn)按下操作的具體示例代碼如下。TouchAction(driver).press(x=80,y=100).perform()4.4.2按下和抬起操作2.抬起操作抬起操作是模擬手指離開屏幕的操作,按下操作與抬起操作可以組合成輕敲或長按操作。實現(xiàn)抬起操作時需要調用release()方法,該方法的語法格式如下。release()如果按下坐標為(650,650)的點后,想要抬起手指結束對屏幕上該點的按壓,此時可以在調用press()方法實現(xiàn)按下操作后,再調用release()方法實現(xiàn)抬起操作,具體示例代碼如下。TouchAction(driver).press(x=650,y=650).release().perform()4.4.2按下和抬起操作下面以Genymotion模擬器設置界面中的“顯示”文本為例,演示如何通過press()方法與release()方法實現(xiàn)對“顯示”文本信息的按下操作和抬起操作,具體代碼如下。[單擊查看源碼]4.4.3等待操作
先定一個小目標!掌握手勢操作的使用方式,能夠實現(xiàn)等待操作4.4.3等待操作等待操作是模擬手指在屏幕上的暫停操作,例如,按下“設置”按鈕后,等待5秒再抬起。等待操作通常可以與按下、抬起、移動等手勢操作組合使用。實現(xiàn)等待操作時需要調用wait()方法,該方法的語法格式如下。wait(ms=0)wait()方法中的參數(shù)ms表示等待的時間,單位為毫秒(ms)。4.4.3等待操作如果想要按下坐標為(700,700)的點,然后暫停2秒,最后抬起手指,則可以通過調用press()方法實現(xiàn)按下操作,然后調用wait()方法實現(xiàn)等待操作,最后調用release()方法實現(xiàn)抬起操作,具體示例代碼如下。TouchAction(driver).press(x=700,y=700).wait(2000).release().perform()4.4.3等待操作下面以Genymotion模擬器中的設置界面為例,演示如何調用press()方法實現(xiàn)按下坐標為(467,569)的點的操作,然后調用wait()方法實現(xiàn)等待3秒的操作,最后調用release()方法實現(xiàn)抬起操作,具體代碼如下。[單擊查看源碼]4.4.4長按操作
先定一個小目標!掌握手勢操作的使用方式,能夠實現(xiàn)長按操作4.4.4長按操作長按操作是模擬手指按下元素或點后,等待一段時間的操作。例如,長按某個按鈕一段時間后會彈出菜單。實現(xiàn)長按操作時需要調用long_press()方法,該方法的語法格式如下。long_press(el=None,x=None,y=None,duration=1000)long_press()方法中的參數(shù)el表示被長按的元素對象;參數(shù)x表示被長按的點的x軸坐標;參數(shù)y表示被長按的點的y軸坐標;參數(shù)duration表示長按時間,單位為毫秒(ms),默認為1000ms。4.4.4長按操作如果長按的是某個元素,則long_press()方法中傳遞該元素對象和長按時間即可。假設長按的元素對象為element,長按時間為2秒,則實現(xiàn)長按該元素的具體示例代碼如下。TouchAction(driver).long_press(element,duration=2000).perform()如果長按的是某個點,則long_press()方法中傳遞該點的坐標和長按時間即可。假設長按的點坐標為(100,100),則實現(xiàn)長按該點的具體示例代碼如下。TouchAction(driver).long_press(x=100,y=100,duration=2000).perform()4.4.4長按操作下面以Genymotion模擬器中“設置”界面右上角的搜索圖標為例,演示如何通過long_press()方法實現(xiàn)對該圖標的長按操作,具體代碼如下。[單擊查看源碼]4.4.5移動操作
先定一個小目標!掌握手勢操作的使用方式,能夠實現(xiàn)移動操作4.4.5移動操作移動操作是手指在屏幕上進行移動的操作,例如,手勢解鎖手機屏幕時,需要手指在屏幕上進行按下、移動和抬起操作。實現(xiàn)移動操作時需要調用move_to()方法,該方法的語法格式如下。move_to(el=None,x=None,y=None)move_to()方法中的參數(shù)el表示被移動的元素對象,參數(shù)x表示被移動的點的x軸坐標,參數(shù)y表示被移動的點的y軸坐標。4.4.5移動操作如果移動的是某個元素,則move_to()方法中傳遞該元素對象即可。假設移動的元素對象為element,則實現(xiàn)移動元素的具體示例代碼如下。TouchAction(driver).move_to(element).perform()如果移動的是某個點,則move_to()方法中傳遞該點的坐標即可。假設移動的點的坐標為(150,150),則實現(xiàn)移動該點的具體示例代碼如下。TouchAction(driver).move_to(x=150,y=150).perform()4.4.5移動操作下面以Genymotion模擬器中手勢解鎖界面為例,演示如何通過按下操作、抬起操作和移動操作實現(xiàn)手勢解鎖的功能,手勢解鎖界面如下圖所示。4.4.5移動操作如果想要實現(xiàn)手勢解鎖界面中的效果,首先調用press()方法實現(xiàn)手指按下的操作,再通過調用move_to()方法實現(xiàn)手指從一個點移動到另一個點的操作,直至手指的軌跡形成“Z”圖案,最后通過調用release()方法與perform()方法實現(xiàn)抬起手指的操作,具體代碼如下。[單擊查看源碼]4.4.6滑動和拖曳操作
先定一個小目標!掌握手勢操作的使用方式,能夠實現(xiàn)滑動和拖曳操作4.4.6滑動和拖曳操作Appium提供了2個方法實現(xiàn)滑動操作,分別是swipe()方法和scroll()方法,其中scroll()方法實現(xiàn)的滑動操作也可以稱為滾動操作。4.4.6滑動和拖曳操作1.滑動操作swipe(start_x,start_y,end_x,end_y,duration=None)(1)通過swipe()方法實現(xiàn)滑動操作通過swipe()方法實現(xiàn)的滑動操作是指手指觸摸屏幕后從一個坐標位置滑動到另一個坐標位置的操作,該操作可以設置滑動持續(xù)時間,并且具有一定的慣性。通過swipe()方法實現(xiàn)的滑動操作是以坐標為操作目標進行移動的,并且只能是屏幕上兩個點之間的操作。swipe()方法的語法格式如下。swipe()方法中的參數(shù)start_x表示滑動操作起始位置的x軸坐標,start_y表示滑動操作起始位置的y軸坐標;end_x表示滑動操作結束位置的x軸坐標,end_y表示滑動操作結束位置的y軸坐標;參數(shù)duration表示滑動操作持續(xù)的時間,單位為毫秒(ms),默認值為None,該參數(shù)可以降低滑動操作的速度和慣性。4.4.6滑動和拖曳操作慣性是指上拉或下滑操作的過程中,滑動結束后頁面還會自動滑動一段距離。4.4.6滑動和拖曳操作需要注意的是,當滑動操作的距離相同時,持續(xù)時間越長,慣性越??;當滑動操作的持續(xù)時間相同時,滑動操作的距離越大,慣性越大。注意4.4.6滑動和拖曳操作下面以Genymotion模擬器中的“設置”界面為例,演示如何通過swipe()方法實現(xiàn)在“設置”界面上的滑動操作。其中滑動的起始位置坐標為(280,1181),結束位置坐標為(293,1001),滑動操作的持續(xù)時間為2秒,具體代碼如下。[單擊查看源碼]4.4.6滑動和拖曳操作scroll(source_element,target_element)(2)通過scroll()方法實現(xiàn)滑動操作通過scroll()方法實現(xiàn)的滑動操作是指手指觸摸屏幕后從一個元素滑動到另外一個元素,直到頁面自動停止的操作,該操作無法設置滑動的持續(xù)時間,但是具有一定的慣性。scroll()方法的語法格式如下。scroll()方法中的參數(shù)source_element表示被滑動的元素對象,參數(shù)
target_element表示目標元素對象。4.4.6滑動和拖曳操作下面以Genymotion模擬器中的“設置”界面為例,演示如何通過scroll()方法實現(xiàn)滑動操作。其中滑動操作中的被滑動元素為“顯示”文本,目標元素為“更多”文本,具體代碼如下。[單擊查看源碼]4.4.6滑動和拖曳操作2.拖曳操作drag_and_drop(source_element,target_element)拖曳操作是指將一個元素拖動到另外一個元素的位置,也可以將一個元素拖動到另外一個元素中。拖曳操作是以控件作為操作目標進行移動的,例如,在手機桌面上,將某個App從當前位置拖曳到另一個位置。拖曳操作可以通過drag_and_drop()方法來實現(xiàn),該方法的語法格式如下。drag_and_drop()方法中的參數(shù)source_element表示被拖曳的元素對象,參數(shù)target_element表示目標元素對象。雖然drag_and_drop()方法與scroll()方法傳遞的參數(shù)都是元素對象,但是拖曳操作沒有慣性。4.4.6滑動和拖曳操作需要注意的是,在調用swipe()方法實現(xiàn)滑動操作時,如果滑動的持續(xù)時間足夠長,則滑動效果會與drag_and_drop()方法實現(xiàn)的拖曳效果一樣。注意4.4.6滑動和拖曳操作下面以G
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度5G通信基礎設施建設出資協(xié)議4篇
- 2025年度國際藝術品出口拍賣合同4篇
- 2025年度承臺施工合同二零二五年度環(huán)保評價2篇
- 二零二五年度攤位租賃與綠色物流合作協(xié)議3篇
- 二零二五年度智慧城市安全監(jiān)控服務合同3篇
- 二零二四年度游艇銷售及品牌授權合同范本3篇
- 二零二四年度院落房屋租賃與民宿客棧知識產(chǎn)權保護合同3篇
- 安全協(xié)議標準化與合規(guī)-深度研究
- 2025年度傳統(tǒng)醫(yī)學技藝傳承合同書規(guī)范文本3篇
- 2025年醇基燃料批發(fā)與零售一體化合同模板下載3篇
- 北師大版 2024-2025學年四年級數(shù)學上冊典型例題系列第三單元:行程問題“拓展型”專項練習(原卷版+解析)
- 2023年譯林版英語五年級下冊Units-1-2單元測試卷-含答案
- Unit-3-Reading-and-thinking課文詳解課件-高中英語人教版必修第二冊
- 施工管理中的文檔管理方法與要求
- DL∕T 547-2020 電力系統(tǒng)光纖通信運行管理規(guī)程
- 種子輪投資協(xié)議
- 物業(yè)客服培訓課件PPT模板
- 員工工資條模板
- 執(zhí)行依據(jù)主文范文(通用4篇)
- 浙教版七年級數(shù)學下冊全冊課件
- 華為攜手深圳國際會展中心創(chuàng)建世界一流展館
評論
0/150
提交評論