第4章 App自动化测试_第1页
第4章 App自动化测试_第2页
第4章 App自动化测试_第3页
第4章 App自动化测试_第4页
第4章 App自动化测试_第5页
已阅读5页,还剩114页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章App自动化测试《自动化测试应用教程(Web+App)》学习目标/Target掌握搭建App自动化测试环境的方式,能够搭建App自动化测试环境掌握adb调试工具和uiautomatorviewer工具的使用方式,能够获取App的信息并定位App界面中的元素掌握常见的驱动操作的使用,能够获取手机屏幕分辨率、手机屏幕截图和手机网络类型等信息掌握手势操作的使用方式,能够实现轻敲、按下和抬起、等待、长按、移动、滑动和拖曳等操作掌握Toast消息处理方式,能够获取Toast消息章节概述/Summary5G时代已经到来,它推动着移动互联网更快速的发展。如今,App(应用程序)(如微信、淘宝等)就像是人们的日常生活小助手,凭借着自身的智能性、及时性和高效的互动性等特点备受大家的喜爱。但是面对不同版本的移动设备(如手机、平板电脑等),App在应用时会产生不同的缺陷,为了让App可以在更多不同版本的移动设备上正常运行,需要通过测试来保证App的质量,下面将对App自动化测试的内容进行详细讲解。目录/Contents0102搭建App自动化测试环境App自动化测试常用工具03驱动操作04手势操作05Toast消息处理搭建App自动化测试环境4.14.1.1安装JDK1.8

先定一个小目标!掌握JDK1.8的安装,能够独自下载与安装JDK1.8并配置Java环境变量4.1.1安装JDK1.8JDK(JavaDevelopmentKit)是Java语言的软件开发工具包,所以搭建Java环境的第一步是下载并安装JDK1.8(当前较稳定的版本),第二步是配置Java环境变量。4.1.1安装JDK1.8访问JDK官方下载网站,进入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首先新建系统变量并设置变量名为“JAVA_HOME”,变量值为JDK1.8所在的安装路径,如右图所示。(2)配置Java环境变量4.1.1安装JDK1.8然后配置CLASSPATH环境变量,将变量名设置为CLASSPATH,将变量值设置为“.;JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar”,如下图所示。4.1.1安装JDK1.8最后配置Path变量。在“环境变量”对话框中的“系统变量”下方找到变量名为Path的变量,单击“编辑”按钮,会弹出“编辑系统变量”对话框,在该对话框中的变量值后面添加“;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;”,如下图所示。4.1.1安装JDK1.8接下来需要验证Java的环境变量是否配置成功。打开cmd命令窗口,在该窗口中输入“java-version”并按下“Enter”键,如下图所示。

先定一个小目标!掌握AndroidSDK的下载,能够独自下载AndroidSDK并配置Android的环境变量4.1.2下载AndroidSDK4.1.2下载AndroidSDK由于创建Android模拟器时,需要使用AndroidSDK,所以在创建Android模拟器之前,需要下载AndroidSDK,不同版本的SDK对应不同的Android系统版本。4.1.2下载AndroidSDK首先访问Android开发工具的官方下载网站,然后在该网站中单击“AndroidSDK工具”,在弹出的菜单列表中单击“SDK”,页面中会显示SDK的相关信息,根据需求选择对应版本下载即可,如右图所示。4.1.2下载AndroidSDK首先将下载的SDK压缩包解压到本地文件夹中,然后配置Android环境变量,便于后续使用adb调试工具和uiautomatorviewer工具。新建系统变量,将变量名设置为“ANDROID_HOME,将变量值设置为”E:\sdk“(SDK所在的路径)如下图所示。4.1.2下载AndroidSDK然后将SDK解压后的platform-tools和tools文件夹的路径添加到系统环境变量Path中,如下图所示。4.1.2下载AndroidSDK最后还需要验证Android的环境变量是否配置成功。打开cmd命令窗口,在该窗口中输入“adbversion”,并按下“Enter”键,如下图所示。

先定一个小目标!掌握Android模拟器的创建,能够独自下载和创建Genymotion模拟器4.1.3创建Android模拟器4.1.3创建Android模拟器Android模拟器是一款能在计算机上运行并模拟Android手机或平板电脑设备的软件,它能够安装、使用或卸载Android应用程序(App)。Android模拟器分为AndroidStudio工具(开发Android应用程序的工具)自带的原生模拟器和第三方模拟器两种。目前市场上有很多第三方模拟器,例如Genymotion模拟器、夜神模拟器、雷电模拟器等,在这些模拟器中Genymotion模拟器的功能更强大一些,它可以根据不同的SDK版本创建不同版本的Android模拟器。下面将选择Genymotion模拟器进行下载与创建。4.1.3创建Android模拟器4.1.3创建Android模拟器访问Genymotion的官方网站,单击“Desktopversion”按钮,进入Genymotion的下载页面,选择带有VirtualBox的Windows版本的Genymotion进行下载即可,如下图所示。(1)下载Genymotion模拟器4.1.3创建Android模拟器下载好Genymotion安装包后,双击该安装包进行安装,在安装过程中不需要更改任何配置,直接单击“下一步”按钮,按照默认方式安装即可。Genymotion安装完成后,会弹出“欢迎使用OracleVMVirtualBox6.1.14安装向导”对话框,如下图所示。(2)安装Genymotion模拟器4.1.3创建Android模拟器第一次使用Genymotion时,首先需要根据页面提示注册账号,然后使用成功注册的账号登录Genymotion,进入“Genymotion”窗口,在该窗口中首先单击“Genymotion”选项,然后单击“Settings”,进入“Settings”对话框设置AndroidSDK路径,如下图所示。(3)设置AndroidSDK路径4.1.3创建Android模拟器对话框设置AndroidSDK路径。“Settings”窗口中的设置完成后,回到“Genymotion”窗口中创建Android模拟器。单击“Genymotion”窗口中的按钮,进入选择模拟器对话框,根据测试的需求选择创建不同API版本或屏幕尺寸的模拟器,如下图所示。(4)创建Android模拟器4.1.3创建Android模拟器以创建API24,屏幕尺寸为768像素×1280像素的模拟器为例,首先单击选择模拟器对话框中的“CustomPhone”选项,然后单击“NEXT”按钮,进入模拟器安装对话框,单击该对话框中的

“INSTALL”按钮即可进行安装,如下图所示。4.1.3创建Android模拟器安装完成后,回到“Genymotion”窗口,该窗口中显示了已创建好的模拟器,此时可以通过单击模拟器后面的

按钮,在弹出的列表中选择“Start”选项来开启模拟器,如下图所示。

先定一个小目标!掌握Appium与Appium-Python-Client库的安装,能够独自安装Appium与Appium-Python-Client库4.1.4安装Appium与Appium-Python-Client库Appium是一个开源工具,用于测试iOS系统、Android系统和Windows系统上安装的应用程序,除此之外,Appium是跨平台的,可以使用一套API编写的测试脚本测试不同平台上的应用。Appium-Python-Client库主要用于提供编写Python语言的脚本代码时需要的方法。4.1.4安装Appium与Appium-Python-Client库首先访问Appium官方网站,然后单击“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自动化测试时,经常会使用一些adb命令来启动或停止adb服务器、获取App的日志信息、连接或断开Android设备等,下面列举一些常用的adb命令,如下表所示。方法说明adbstart-server启动adb服务器adbkill-server停止adb服务器adblogcat获取日志信息adbconnectIP地址连接某个设备adbdisconnectIP地址断开某个设备的连接adbinstallapk文件路径在手机上安装Appadbuninstall包名卸载手机上的Appadbdevices获取当前计算机已经连接的设备和对应的设备号adbshell进入Android手机内部的Linux系统命令行中adbshellamstart-w包名/界面名获取App启动时间4.2.1adb调试工具方法说明adbshelldumpsyswindowwindows|findstrmFocusedApp获取包名和界面名adbshelldumpsyswindowwindows|findstr“userdApp”获取包名和界面名adbpush计算机的文件路径手机的文件夹路径将文件从计算机发送至手机adbpull手机的文件路径计算机的文件夹路径将文件从手机发送至计算机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官方网站中下载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个区域,这4个区域的具体介绍如下。区域1:功能按钮区。该区域一共有4个图标,这4个图标从左到右的功能依次为打开已保存的布局图片、获取详细布局信息、获取简洁布局信息、保存布局。在App自动化测试过程中,通常会单击该区域中的第2个图标,从而获取App界面的详细布局信息。区域2:截图区。该区域用于显示当前启动的Android设备屏幕显示的布局图片。区域3:布局区。该区域以XML树的形式显示App界面的控件布局。区域4:控件属性区。当用户单击界面上的某一个控件时,该区域会显示控件的属性信息。4.2.2uiautomatorviewer工具下面演示使用启动的uiautomatorviewer工具来定位Android模拟器中通讯录App的新增联系人界面中的姓名输入框信息。首先启动Android模拟器,打开模拟器中的通讯录App,在App中打开新增联系人界面,如右图所示。4.2.2uiautomatorviewer工具单击UIAutomatorViewer窗口功能按钮区的第2个图标

,此时截图区会显示新增联系人界面的布局图片,如下图所示。以XML树的形式显示了姓名输入框的布局信息控件属性区域显示了姓名输入框控件的属性信息4.2.2uiautomatorviewer工具需要注意的是,当第一次单击UIAutomatorViewer窗口功能按钮区的第2个图标时,程序可能会弹出“ErrorobtainingDeviceScreenshot”对话框,提示找不到Android设备,如下图所示。注意4.2.2uiautomatorviewer工具为了解决找不到Android设备的问题,首先关闭Android设备,然后打开Windows任务管理器窗口,在该窗口中选择名称为adb.exe*32的进程,单击“结束进程”按钮关闭adb服务器的进程即可,如下图所示。驱动操作4.34.3.1获取手机屏幕分辨率

先定一个小目标!掌握常见的App驱动操作的使用,能够获取手机屏幕分辨率4.3.1获取手机屏幕分辨率手机屏幕分辨率是指屏幕上横向像素点与纵向像素点数量的乘积。当对App进行自动化测试时,有时需要根据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()定义字典参数分别用于设置平台的名称、版本号和设备(模拟器)名称4.3.2获取手机屏幕截图

先定一个小目标!掌握常见的App驱动操作的使用,能够获取手机屏幕截图4.3.2获取手机屏幕截图当对App进行自动化测试时,可能会出现执行完自动化测试脚本后App没有进行任何操作,同时脚本代码也没有输出任何报错信息,此时需要将操作后的关键信息进行截图保存,通过这些截图信息可以帮助测试人员分析测试脚本或App出现了什么问题。4.3.2获取手机屏幕截图get_screenshot_as_file(filename)SeleniumWebDriver提供了一个获取手机屏幕截图的方法get_screenshot_as_file(),该方法可以将手机屏幕截图保存到指定的文件夹中,该方法的语法格式如下。get_screenshot_as_file()方法中的参数filename是截图的文件路径和名称,需要注意的是,此处的文件路径必须是存在的,即提前创建好的,截图文件的后缀名为.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获取手机网络类型

先定一个小目标!掌握常见的App驱动操作的使用,能够获取手机网络类型4.3.3获取手机网络类型我们在使用Wi-Fi观看视频时,如果Wi-Fi突然断开,此时手机上就会提示Wi-Fi已断开,是否切换为数据流量继续播放视频的信息,这个信息只有App程序获取手机网络类型时才会提示。在测试脚本代码中获取手机网络类型的属性如下。work_connection4.3.3获取手机网络类型在自动化测试脚本代码中,还可以通过调用set_network_connection()方法设置手机的网络类型,该方法的语法格式如下。driver.set_network_connection(connectionType)set_network_connection()方法中的参数connectionType表示网络连接的类型,默认是int类型的数据。例如,该值设置为2时,表示使用的网络是Wi-Fi;该值设置为4时,表示使用的网络是数据流量;该值设置为6时,表示使用的网络是Wi-Fi或数据流量(有Wi-Fi时,默认使用Wi-Fi,无Wi-Fi时,默认使用数据流量)。4.3.3获取手机网络类型下面以Genymotion模拟器为例,演示如何获取并设置模拟器的网络类型,具体代码如下。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)#获取网络类型print(work_connection)#设置网络类型driver.set_network_connection(4)print(work_connection)driver.quit()4.3.4模拟手机键盘操作

先定一个小目标!掌握常见的App驱动操作的使用,能够模拟手机键盘操作4.3.4模拟手机键盘操作如果想要通过脚本代码实现手机键盘的不同操作,可使用Appium提供的press_keycode()方法,根据该方法中传递的不同参数,可以模拟手机键盘的不同操作,例如模拟按下手机返回键、拨号键等操作。press_keycode()方法的语法格式如下。press_keycode(keycode:int,metastate=None,flags=None)press_keycode()方法中有3个参数,第1个参数keycode表示键值;第2个参数metastate表示控制按键,例如键盘上的“Alt”键、“Shift”键等,默认值为None;第3个参数flags表示按键的标识,默认值为None。4.3.4模拟手机键盘操作press_keycode()方法是以传入键值的形式来模拟键盘的不同操作,其常用的键值及说明如下表所示。方法说明press_keycode(3)表示按下“Home”按键press_keycode(4)表示按下返回键press_keycode(5)表示按下拨号键press_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轻敲操作

先定一个小目标!掌握手势操作的使用方式,能够实现轻敲操作4.4.1轻敲操作轻敲操作是指模拟手指对某个元素或点按下并快速抬起的操作,实现轻敲操作时需要调用tap()方法,该方法的语法格式如下。tap(element=None,x=None,y=None)tap()方法中的参数element表示被轻敲的元素对象,参数x表示被轻敲的点的x轴坐标,参数y表示被轻敲的点的y轴坐标。tap()方法中的3个参数的默认值均为None。4.4.1轻敲操作如果轻敲的是某个元素,则tap()方法中只需要传递该元素对象。假设轻敲的元素对象为element,则实现轻敲元素的具体示例代码如下。TouchAction(driver).tap(element).perform()上述示例代码中的perform()方法用于执行tap()方法。4.4.1轻敲操作如果轻敲的是某个点,则tap()方法中只需要传递该点的坐标。假设轻敲的点坐标为(100,100),则实现轻敲一个点的具体示例代码如下。TouchAction(driver).tap(x=100,y=100).perform()通过tap()方法实现的轻敲操作与通过click()方法实现的单击操作类似,这两个方法实现的操作都属于单击操作,不同的是通过click()方法实现的单击操作会延迟200ms~300ms。4.4.1轻敲操作下面以Genymotion模拟器中的“设置”界面为例,演示如何通过tap()方法实现轻敲“设置”界面上的“流量使用情况”文本元素的操作,具体代码如下。[单击查看源码]多学一招打开模拟器的指针位置通常,在刚创建的模拟器中指针位置默认是关闭的状态,在进行App自动化测试时,有时候需要获取界面元素的坐标值,此时可以通过打开模拟器的“设置”界面,在该界面滑动至底部,单击“开发者选项”文本,进入“开发者选项”界面,然后单击

开启指针位置,即可在模拟器顶部查看坐标值,如右图所示。4.4.2按下和抬起操作

先定一个小目标!掌握手势操作的使用方式,能够实现按下和抬起操作4.4.2按下和抬起操作1.按下操作按下操作是模拟手指按压屏幕上某个元素或点的操作,实现按下操作时需要调用press()方法,该方法的语法格式如下。press(el=None,x=None,y=None)press()方法中参数el表示被按下的元素对象,参数x表示被按下的点的x轴坐标,参数y表示被按下的点的y轴坐标。press()方法中的3个参数的默认值均为None。4.4.2按下和抬起操作如果按下的是某个元素,则press()方法中只需要传递该元素对象。假设按下的元素对象为element,则实现按下操作的具体示例代码如下。TouchAction(driver).press(element).perform()如果按下的是某个点,则press()方法中只需要传递该点的坐标。假设按下的点坐标为(80,100),则实现按下操作的具体示例代码如下。TouchAction(driver).press(x=80,y=100).perform()4.4.2按下和抬起操作2.抬起操作抬起操作是模拟手指离开屏幕的操作,按下操作与抬起操作可以组合成轻敲或长按操作。实现抬起操作时需要调用release()方法,该方法的语法格式如下。release()如果按下坐标为(650,650)的点后,想要抬起手指结束对屏幕上该点的按压,此时可以在调用press()方法实现按下操作后,再调用release()方法实现抬起操作,具体示例代码如下。TouchAction(driver).press(x=650,y=650).release().perform()4.4.2按下和抬起操作下面以Genymotion模拟器设置界面中的“显示”文本为例,演示如何通过press()方法与release()方法实现对“显示”文本信息的按下操作和抬起操作,具体代码如下。[单击查看源码]4.4.3等待操作

先定一个小目标!掌握手势操作的使用方式,能够实现等待操作4.4.3等待操作等待操作是模拟手指在屏幕上的暂停操作,例如,按下“设置”按钮后,等待5秒再抬起。等待操作通常可以与按下、抬起、移动等手势操作组合使用。实现等待操作时需要调用wait()方法,该方法的语法格式如下。wait(ms=0)wait()方法中的参数ms表示等待的时间,单位为毫秒(ms)。4.4.3等待操作如果想要按下坐标为(700,700)的点,然后暂停2秒,最后抬起手指,则可以通过调用press()方法实现按下操作,然后调用wait()方法实现等待操作,最后调用release()方法实现抬起操作,具体示例代码如下。TouchAction(driver).press(x=700,y=700).wait(2000).release().perform()4.4.3等待操作下面以Genymotion模拟器中的设置界面为例,演示如何调用press()方法实现按下坐标为(467,569)的点的操作,然后调用wait()方法实现等待3秒的操作,最后调用release()方法实现抬起操作,具体代码如下。[单击查看源码]4.4.4长按操作

先定一个小目标!掌握手势操作的使用方式,能够实现长按操作4.4.4长按操作长按操作是模拟手指按下元素或点后,等待一段时间的操作。例如,长按某个按钮一段时间后会弹出菜单。实现长按操作时需要调用long_press()方法,该方法的语法格式如下。long_press(el=None,x=None,y=None,duration=1000)long_press()方法中的参数el表示被长按的元素对象;参数x表示被长按的点的x轴坐标;参数y表示被长按的点的y轴坐标;参数duration表示长按时间,单位为毫秒(ms),默认为1000ms。4.4.4长按操作如果长按的是某个元素,则long_press()方法中传递该元素对象和长按时间即可。假设长按的元素对象为element,长按时间为2秒,则实现长按该元素的具体示例代码如下。TouchAction(driver).long_press(element,duration=2000).perform()如果长按的是某个点,则long_press()方法中传递该点的坐标和长按时间即可。假设长按的点坐标为(100,100),则实现长按该点的具体示例代码如下。TouchAction(driver).long_press(x=100,y=100,duration=2000).perform()4.4.4长按操作下面以Genymotion模拟器中“设置”界面右上角的搜索图标为例,演示如何通过long_press()方法实现对该图标的长按操作,具体代码如下。[单击查看源码]4.4.5移动操作

先定一个小目标!掌握手势操作的使用方式,能够实现移动操作4.4.5移动操作移动操作是手指在屏幕上进行移动的操作,例如,手势解锁手机屏幕时,需要手指在屏幕上进行按下、移动和抬起操作。实现移动操作时需要调用move_to()方法,该方法的语法格式如下。move_to(el=None,x=None,y=None)move_to()方法中的参数el表示被移动的元素对象,参数x表示被移动的点的x轴坐标,参数y表示被移动的点的y轴坐标。4.4.5移动操作如果移动的是某个元素,则move_to()方法中传递该元素对象即可。假设移动的元素对象为element,则实现移动元素的具体示例代码如下。TouchAction(driver).move_to(element).perform()如果移动的是某个点,则move_to()方法中传递该点的坐标即可。假设移动的点的坐标为(150,150),则实现移动该点的具体示例代码如下。TouchAction(driver).move_to(x=150,y=150).perform()4.4.5移动操作下面以Genymotion模拟器中手势解锁界面为例,演示如何通过按下操作、抬起操作和移动操作实现手势解锁的功能,手势解锁界面如下图所示。4.4.5移动操作如果想要实现手势解锁界面中的效果,首先调用press()方法实现手指按下的操作,再通过调用move_to()方法实现手指从一个点移动到另一个点的操作,直至手指的轨迹形成“Z”图案,最后通过调用release()方法与perform()方法实现抬起手指的操作,具体代码如下。[单击查看源码]4.4.6滑动和拖曳操作

先定一个小目标!掌握手势操作的使用方式,能够实现滑动和拖曳操作4.4.6滑动和拖曳操作Appium提供了2个方法实现滑动操作,分别是swipe()方法和scroll()方法,其中scroll()方法实现的滑动操作也可以称为滚动操作。4.4.6滑动和拖曳操作1.滑动操作swipe(start_x,start_y,end_x,end_y,duration=None)(1)通过swipe()方法实现滑动操作通过swipe()方法实现的滑动操作是指手指触摸屏幕后从一个坐标位置滑动到另一个坐标位置的操作,该操作可以设置滑动持续时间,并且具有一定的惯性。通过swipe()方法实现的滑动操作是以坐标为操作目标进行移动的,并且只能是屏幕上两个点之间的操作。swipe()方法的语法格式如下。swipe()方法中的参数start_x表示滑动操作起始位置的x轴坐标,start_y表示滑动操作起始位置的y轴坐标;end_x表示滑动操作结束位置的x轴坐标,end_y表示滑动操作结束位置的y轴坐标;参数duration表示滑动操作持续的时间,单位为毫秒(ms),默认值为None,该参数可以降低滑动操作的速度和惯性。4.4.6滑动和拖曳操作惯性是指上拉或下滑操作的过程中,滑动结束后页面还会自动滑动一段距离。4.4.6滑动和拖曳操作需要注意的是,当滑动操作的距离相同时,持续时间越长,惯性越小;当滑动操作的持续时间相同时,滑动操作的距离越大,惯性越大。注意4.4.6滑动和拖曳操作下面以Genymotion模拟器中的“设置”界面为例,演示如何通过swipe()方法实现在“设置”界面上的滑动操作。其中滑动的起始位置坐标为(280,1181),结束位置坐标为(293,1001),滑动操作的持续时间为2秒,具体代码如下。[单击查看源码]4.4.6滑动和拖曳操作scroll(source_element,target_element)(2)通过scroll()方法实现滑动操作通过scroll()方法实现的滑动操作是指手指触摸屏幕后从一个元素滑动到另外一个元素,直到页面自动停止的操作,该操作无法设置滑动的持续时间,但是具有一定的惯性。scroll()方法的语法格式如下。scroll()方法中的参数source_element表示被滑动的元素对象,参数

target_element表示目标元素对象。4.4.6滑动和拖曳操作下面以Genymotion模拟器中的“设置”界面为例,演示如何通过scroll()方法实现滑动操作。其中滑动操作中的被滑动元素为“显示”文本,目标元素为“更多”文本,具体代码如下。[单击查看源码]4.4.6滑动和拖曳操作2.拖曳操作drag_and_drop(source_element,target_element)拖曳操作是指将一个元素拖动到另外一个元素的位置,也可以将一个元素拖动到另外一个元素中。拖曳操作是以控件作为操作目标进行移动的,例如,在手机桌面上,将某个App从当前位置拖曳到另一个位置。拖曳操作可以通过drag_and_drop()方法来实现,该方法的语法格式如下。drag_and_drop()方法中的参数source_element表示被拖曳的元素对象,参数target_element表示目标元素对象。虽然drag_and_drop()方法与scroll()方法传递的参数都是元素对象,但是拖曳操作没有惯性。4.4.6滑动和拖曳操作需要注意的是,在调用swipe()方法实现滑动操作时,如果滑动的持续时间足够长,则滑动效果会与drag_and_drop()方法实现的拖曳效果一样。注意4.4.6滑动和拖曳操作下面以G

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论