识别对象的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) | 将被测程序放置在后台持续运行一段时间 |