appium常用api

一.元素定位

需要注意的是每一种定位方式在界面上都可能存在多个属性值相同的元素

  1. findElementById(String id) 通过元素的resource-id的值进行查找元素

AndroidElement ele=driver.findElementById(“com.zhihu.android:id/login_and_register”);

  1. findElementByName(String using 通过元素的text属性值或者content-desc属性值进行查找元素

AndroidElement ele=driver.findElementByName(“登录或注册”);

  1. findElementByClassName(String using) 通过元素的class属性值进行查找元素

AndroidElement ele=driver.findElementByClassName(“android.widget.Button”);

  1. findElementByXpath(String using) 通过xpath表达式去定位元素

AndroidElement ele=driver.findElementByXpath(“//android.widget.Button[@text=’登录或注册’]”);

  1. findElementByAndroidUIAutomator(String using) 通过uiautomator定位方法查找元素

AndroidElement ele=findElementByAndroidUIAtomator("new UiSelector().text(\"登录或注册\")")

  1. findElement(By by) 以by对象作为参数查找元素

findElement(By.id(String id))

findELement(By.name(String using))

findElement(By.classname(String using))

findElement(By.xpath(String using))

这个方法的返回值和1-4的一样的,传参也一样,如:

AndroidElement ele=driver.findElement(By.id(“com.zhihu.android:id/login_and_register”));

  1. 定位多个元素时只要将findElement改成findElements就行,如下

List<AndroidElement> eleList=driver.findElementsById(“xxxxx”);

或者

List<AndroidElement> eleList=driver.findElements(By.id(“xxxxx”));

当获取到多个相同元素为一个集合时,要操作其中一个,可以使用索引进行指定操作,比如要操作点击第2个(索引从0开始,所以点击第2个元素的索引是1)

eleList.get(1).click();

当需要遍历这个集合元素时,使用如下

for(AndroidElement ae:eleList){

ae.click();

//点击后如果不在当前界面,这里需要一行“返回”操作的代码

}

二.元素常用操作

2.1 元素点击

element.click()

2.2 输入内容

element.sendKeys(“xxxxx”)

2.3 清空输入框

element.clear()

另外一种清空方法(逐个删除)

element.click();//先点击一下元素确定光标焦点

driver.pressKeyCode(123);//将光标置于当前的最后

for(int i=0;i<element.getText().length();i++){

driver.pressKeyCode(67);//删除

}

2.3 获取元素某个属性值(不能获取password,package,index,bounds这三个属性,”content-desc”使用contentDescription)

element.getAttribute("text");

2.4 获取该元素的中心点坐标

int x=element.getCenter().getX();//元素中心点的x坐标值

int y=element.getCenter().getY();//元素中心点的y坐标值

2.5 获取该元素的起始点坐标

int x= logout.getLocation().getX();//元素的起始x坐标值

int y=logout.getLocation().getX();//元素的起始y坐标值

2.6 获取该元素的宽高

int width=element.getSize().width;//元素的宽

int height=element.getSize().height;//元素的高

2.7 元素滑动

element.swipe(SwipeElementDirection.UP, 20,20,500);//向上滑动

element.swipe(SwipeElementDirection.DOWN, 20,20,500);//向下滑动

element.swipe(SwipeElementDirection.LEFT, 20,20,500);//向左滑动

element.swipe(SwipeElementDirection.RIGHT, 20,20,500);//向右滑动

2.8 元素长按

TouchAction ta=new TouchAction(driver);

ta.longPress(element).release().perform();

2.9 获取元素的文本值

String text=element.getText();

2.10 替换元素的文本值(可以作为输入的另一种方式)

element.replaceValue("txt");

2.11  tap的几种用法

element.tap(1,50)//单击

三.driver常用方法

3.1 启动其他app,用例之间的衔接(每个用例都是单独从首页开始执行,因为不能确认上1个用例执行完后到底停留在哪个页面)

driver.startActivity(“appPackage”,”appActivity”);

driver.startActivity(“appPackage”,”appActivity”,”appWaitActivity”);

3.2 获取当前activity

String curActivity=driver.currentActivity();

3.3 获取当前网络状态

driver.getNetworkConnection();

3.4 获取当前context

driver.getContext();

3.5 获取当前界面所有资源

driver.getPageSource();

3.6 获取当前appium settings设置

driver.getSettings();

3.7 获取当前所有context

driver.getContextHandles();

3.8 获取当前sessionid

driver.getSessionId();

3.9 获取当前设备的方向(横屏还是竖屏)

driver.getOrientation();

3.10 设置当前ignoreUnimportantViews值

driver.ignoreUnimportantViews(true);//在true和false可以随时切换

3.11 安装app

driver.installApp("C:\\Users\\lixionggang\\Desktop\\xinchangtai.apk");

3.12 重置app,会重置app的数据

driver.resetApp();

3.13 卸载app

driver.removeApp("apppackage");

3.14 打开通知栏

driver.openNotifications();

3.15 tap点击

driver.tap(int fingers,WebElement element,int duration)//方法定义

第一个参数是指点击次数,第二个是点击对象,第三个是点击间隔时间

driver.tap(1, element, 50);//点击元素element

driver.tap(int fingers,int x,int y,int duration)//方法定义

第一个和最后一个参数同上,中间两个是要点击的点的坐标

driver.tap(1, 540, 540, 50);//点击坐标(540,540)

3.16 滑动

driver.swipe(int startx,int starty,int xend,int yend,int duration )

前两个参数是滑动起始点的坐标,中间两个参数是滑动结束点的坐标,最后一个是持续时间

driver.swipe(300,300,300,1000,500);

3.17 设置网络连接

数字0代码全断开,1代表开启飞行模式,2代表开启wifi,4代表开启数据流量

NetworkConnectionSetting network=new NetworkConnectionSetting(2);

driver.setNetworkConnection(network);

3.18 设置隐式等待(全局等待)

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

3.18 获取app应用占据屏幕的大小

int width=driver.manage().window().getSize().getWidth();

int height=driver.manage().window().getSize().getHeight();

原文地址:https://www.cnblogs.com/yt1234/p/9463963.html

时间: 2025-01-16 22:27:29

appium常用api的相关文章

APPIUM 常用API

(1)获取当前页面的activity名,比如: (.ui.login.ViewPage)  current_activity() 比如我们需要实现这个登录的功能时,主要思路为如果当前界面为登录页面时,就进行登录行为,否则就跳转到登录页面.其伪代码为: 1 if driver.current_activity == ".ui.login.ViewPage": 2 // To login_action 3 else: 4 // Trun to loginPage (2)获取当前页面的树形结

appium 常用api介绍(1)

前言:android手机大家都很熟悉,操作有按键.触摸.点击.滑动等,各种操作方法可以通过api的方法来实现. 参考博文:http://blog.csdn.net/bear_w/article/details/50330565 1.click  click(self): Clicks the element(点击元素 ) 用法 element.click() driver.find_element_by_id('com.huawei.camera:id/shutter_button').clic

Robotframework-Appium 之常用API(一)

上一遍隨筆(https://www.cnblogs.com/cnkemi/p/9639809.html)用Python + Robotframework + Appium對Android app小試牛刀啦,了解了其完全也可以做操作APP的,然後簡單說明了其環境搭建. 下面來介紹下Robotframework-Appium常用的API,掌握其api就可以做更多的操作啦! 1. Name: Background App Source: AppiumLibrary <test library> Ar

C++ 中超类化和子类化常用API

在windows平台上,使用C++实现子类化和超类化常用的API并不多,由于这些API函数的详解和使用方法,网上一大把.本文仅作为笔记,简单的记录一下. 子类化:SetWindowLong,GetWindowLong,CallWindowProc,FindWindowEx 超类化:GetClassInfoEx,RegisterClassEx,UnRegisterClass 以上函数在代码中的使用见<C++ 中超类化和子类化> VC中基于SDK编程的窗口子类化 VC中基于SDK编程的窗口子类化的

List容器——ArrayList及常用API

List: ①   List容器是有序的collection(也称为序列).此接口的用户可以对List容器中每个元素的插入位置进行精确地控制.用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素.List容器允许插入重复的值,包括null; ②   最常见的两个List接口的实现类是ArrayList和LinkedList; ArrayList及常用API: ①   ArrayList—动态数组; ②   ArrayList类扩展了AbstractList并实现了List接口

hadoop常用api编写

package hsfs常用api; import java.io.ByteArrayInputStream;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.net.URI;import java.net.URISyntaxException; import org.apache.hadoop.conf.Configuration;

hadoop java接口及常用api

# java接口及常用api package com.yting.hadoop.hdfs; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.net.URI; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataInputS

java:Hibernate框架(环境搭建,Hibernate.cfg.xml中属性含义,Hibernate常用API对象,HibernteUitl,对象生命周期图,数据对象的三种状态)

1.环境搭建: 三个准备+7个步骤 准备1:新建项目并添加hibernate依赖的jar文件  准备2:在classpath下(src目录下)新建hibernate的配置文件:hibernate.cfg.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configurati

STL vector常用API

1.容器:序列容器(时间决定).关联式容器(容器中的数据有一定规则) 2.迭代器:通过迭代器寻找.遍历容器中的数据 vetor的使用:数据遍历与输出 #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<vector> //向量 动态数组 #include<algorithm> //算法头文件 #include<string> using namespace std; void myPrint