JavaApp自动化测试系列[v1.0.0][Driver API详解]

识别对象的API

识别对象的方法分为两类,一个是识别单个对象的方法findElement和识别一组对象的方法findElements,原理基本相同,使用findElement只返回一个结果,如果存在多个则返回第一个

API方法 方法描述
findElementByName 通过控件的Text来查找控件,新版本中已经被摒弃
findElementByClassName 通过控件的ClassName来查找
findElementById 通过控件的RsourceId来查找
findElementByAccessibilityId 通过控件的Content Description来查找
findElementByXpath 通过控件的XPath来查找
findElementByAndroidUIAutomator 通过UIAutomator的定位方式来查找
findElementBycssSelector 通过CSS Selector来查找控件,只适用于Web App和混合App
findElementByLinkText 通过链接的文本来查找,只适用于Web App和混合App
findElementByPartialLinkText 通过链接的部分文本来查找,只适用于Web App和混合App
findElementByTagName 通过TagName来查找,只适用于Web App和混合App

与控件信息相关的API

API方法 方法描述
public String getText() 获取控件显示的文本信息,返回值为String类型
public String getAttribute(String name) 获取控件的属性值,name为属性字段,如text、clickable、resource-di等
public Point getLocation() 获取控件的位置信息,返回值为Point类型,返回控件的坐标值
public String getTagName() 获取控件的tag名称,不适用原生App,返回值为String类型,返回tag名称
public void click() 单击控件
public void clear() 如果是文本输入框,清空控件的文本
public boolean isEnabled() 判断控件是否处于可用状态,返回Boolean类型,如果显示则返回True,否则返回False
public boolean isSelected() 判断控件是否处于可被选中状态,返回值为Boolean类型,如果可被选中则返回True,否则返回False
public boolean isDisplayed() 判断控件是否显示,返回值为Boolean类型,如果显示则返回True,否则返回False
public void sendKeys(CharSequence…keysToSend) 模拟输入文本到控件中,keysToSend表示文本字符串
public void setValue(String value) 对控件的value属性重新复制,value表示待输入的文本字符

与手势相关的API

AndroidDriver和AppiumDriver继承自WebDriver,针对于移动端增加了一些专用于操作移动端的手势动作

API方法 方法描述
public void swipe (int startx, int starty, int endx, int endy, int duration) 从屏幕的A点滑到B点,startx为起点x轴坐标starty为起点y轴坐标,endx为终点x轴坐标endy为终点y轴坐标,duration为动作持续时间
public void flick(self, startx, starty, endx, endy) 按住A点后快速滑动至B点,startx 滑动起点x坐标,starty滑动起点y坐标,endx滑动终点x坐标 ,endy滑动终点y坐标
rotate 设置屏幕方向
public void zoom(WebElement el) 传入页面元素对象然后将其放大
public void zoom(int x, int y) zoom(x,y) 方法其实是由两个 MultiTouchAction实现的 首先根据你传入的坐标点确定偏移量,然后创建两个Action分别相反方向移动,同时间释放
public void pinch(WebElement el) 与zoom相反
public void pinch(int x, int y) 与zoom相反

与TouchAction相关的API

TouchAction的原理是将一系列动作放在一个链条中,然后将该联调传递给服务器,服务器接收到链条解析各个动作逐个执行

API方法 方法描述
public TouchAction press(WebElement el) 单击控件的中心位置,返回值为TouchAction对象,el为页面元素对象
public TouchAction press(int x, int y) 单击坐标点的位置,返回值为TouchAction对象,x和y为待单击的坐标值
public TouchAction press(WebElement el, int x, int y) 单击控件,返回值为TouchAction对象,el为要单击的页面元素,x和y为页面元素相对于左上角的偏移量
public TouchAction release() 释放操作
public TouchAction moveTo(WebElement el) 移动当前的触摸点到指定空间的中心位置
public TouchAction moveTo(int x, int y) 移动当前的触摸点到指定的坐标点,x和y为相对于当前坐标的偏移量
public TouchAction moveTo(WebElement el, int x, int y) 移动当前的触摸点到指定控件的位置,x和y为相对于控件左上角的偏移量
public TouchAction tap(int x, int y) 单击坐标点的位置,返回值为TouchAction对象,x和y为单击的坐标值
public TouchAction tap(WebElement el) 单击控件的中心位置,el为单击的空间
public TouchAction tap(WebElement el, int x, int y) 单击控件的位置,el为单击的控件,x和y为先对于控件左上角的偏移量
public TouchAction waitAction() 等待
public TouchAction waitAction(Duration duration) 等待指定的时间
public TouchAction longPress(WebElement el) 按住控件不放,el为待按住的控件
public TouchAction longPress(WebElement el, Duration duration) 按住控件不放,持续指定的时间
public TouchAction longPress(int x, int y) 按住坐标点位置不放,x和y为待长按的坐标值
public TouchAction longPress(int x, int y, Duration duration) 按住坐标点位置不放,持续指定时间
public TouchAction longPress(WebElement, int x, int y) ---------太扯了这方法------------
public TouchAction longPress(WebElement, int x, int y, Duration duration) ----------太扯了这方法-----------
public void cancel() 取消操作
public TouchAction perform() 执行操作

与系统操作相关的API

API方法 方法描述
public Set getContexHandles() 获取当前会话所有可用的上下文(Context),返回值为Set类型,返回上下文的值
public String getContext() 获取当前会话正在使用的上下文,返回值为String类型,返回上下文的值
public WebDriver context(String name) 跳转到指定的上下文,name为待跳转的上下文值,返回值为WebDriver类型
default void pressKeyCode(int key) 模拟发送一个硬件码给移动端,然后单击,key为硬件码
default void longPressKeyCode(int key) 模拟发送一个硬件码给移动端,然后长按,key为硬件码
default String currentActivity() 获取当前正在显示的Activity信息,返回值为String类型,返回值为Activity值
default String getCurrentPackage() 获取当前正在显示的Package信息,返回值为String类型,返回值为Package值
default byte[] pullFile(String remotePath) 拉去手机上的文件,返回值为Base64格式编码的数据,在Android上,remotePath为文件放在手机上的位置
default byte[] pullFolder(String remotePath) 拉取手机上的文件夹,返回值为Base64格式编码的数据,在Android上,remotePath为文件夹放在手机上的位置
default void pushFile(String remotePath, byte[]base64Data) 将多个以Base64格式编码的数据推送到手机的文件路径
default void pushFile(String remotePath, File file) 将一个以Base64格式编码的数据推送到手机的文件路径
default void hideKeyboard() 如果有键盘出现,则隐藏键盘
default void startActivity(Activity activity) 启动某个Activity, 如果Activity属于另外一个应用程序,则应用程序被打开
public void openNotifications() 打开消息通知栏
default Connection getConnection() 返回当前网络连接的类型,范围值为当前网络的连接类型
default void seConnection(Connection connection) 设置网络,connection值为NONE(0), AIRPLANE(1)、WIFI(2)、DATA(4)、ALL(6)
public byte[] getScreenshotAs(OutputType) 将手机屏幕截屏另存为计算机上的文件,保存文件类型
default void lanchApp() 启动Desired Capabilities中指定的应用程序
default void installApp(String appPath) 安装App
default boolean isAppInstalled(String bundleId) 判断App是否安装
default void resetApp() 重置当前运行的App
default void runAppInBackground(Duration duration) 将被测程序放置在后台持续运行一段时间

猜你喜欢

转载自blog.csdn.net/dawei_yang000000/article/details/108251124