Appium API

1、创建新的会话

创建一个新的会话

 

DesiredCapabilities desiredCapabilities =new DesiredCapabilities();

desiredCapabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION,"10.3");

desiredCapabilities.setCapability(MobileCapabilityType.DEVICE_NAME,"iPhone Simulator");

desiredCapabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME,"XCUITest");

desiredCapabilities.setCapability(MobileCapabilityType.APP,"/path/to/ios/app.zip");

 

URL url = newURL("http://127.0.0.1:4723/wd/hub");

 

IOSDriver driver = new IOSDriver(url,desiredCapabilities);

String sessionId =driver.getSessionId().toString();

 

2、结束会话

结束正在运行的会话

 

driver.quit();

 

3、获取会话功能

检索指定会话的功能

 

Map caps = driver.getSessionDetails();

 

4、回退

如果可能,在浏览器历史记录中向后浏览(仅限Web上下文)

 

driver.back();

 

5、截图

截取当前的视口/窗口/页面

 

File scrFile =((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);

 

6、超时

 

设置超时

配置特定类型的操作在被中止之前可以执行的时间量

 

driver.manage().timeouts().pageLoadTimeout(30,TimeUnit.SECONDS);

 

设置隐式等待超时

设置搜索元素时驱动程序应该等待的时间量

 

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

 

设置脚本超时

设置的时间量,以毫秒为单位,通过执行异步脚本执行异步允许运行它们都将立即中止之前(仅限于Web上下文)

 

driver.manage().timeouts().setScriptTimeout(30,TimeUnit.SECONDS);

 

7、方向

 

获取方向

获取当前的设备/浏览器方向

 

ScreenOrientation orientation =driver.getOrientation();

 

设置方向

设置当前的设备/浏览器方向

 

driver.rotate(ScreenOrientation.LANDSCAPE);

 

8、地理位置

 

获取地理位置

获取当前的地理位置

 

Location location = driver.location();

//必须是一个驱动程序,实现了LocationContext

 

设置地理位置

设置当前的地理位置

 

driver.setLocation(new Location(49, 123,10));

//必须是一个驱动程序,实现了LocationContext

 

9、日志

 

获取可用的日志类型

获取给定日志类型的日志。日志缓冲区在每次请求后都会重置

 

Set logTypes =driver.manage().logs().getAvailableLogTypes();

 

获取日志

获取给定日志类型的日志。日志缓冲区在每次请求后都会重置

 

LogEntries logEntries =driver.manage().logs().get("driver");

 

10、设置

 

更新设备设置

更新设备上的当前设置

 

driver.setSetting(Setting.WAIT_FOR_IDLE_TIMEOUT,Duration.ofSeconds(5));

 

检索设备设置

检索设备上的当前设置

 

Map settings =driver.getSettings();

 

11、活动

 

开始活动

通过提供软件包名称和活动名称来开始Android活动

 

driver.startActivity(newActivity("com.example", "ActivityName"));

 

获取当前活动

获取当前Android活动的名称

 

String activity = driver.currentActivity();

 

获取当前包

获取当前Android包的名称

 

String package =driver.getCurrentPackage();

 

12、应用

 

安装应用程序

将给定的应用程序安装到设备上

 

driver.installApp("/Users/johndoe/path/to/app.apk");

 

应用程序已安装

检查设备上是否安装了指定的应用程序

 

driver.isAppInstalled("com.example.AppName");

 

启动应用程序

在设备上启动应用程序

 

driver.launchApp();

 

背景应用程序

将当前正在运行的应用程序发送到后台

 

driver.runAppInBackground(Duration.ofSeconds(10));

 

关闭应用程序

关闭设备上的应用

 

driver.closeApp();

 

重置应用程序

重置此会话的当前正在运行的应用程序

 

driver.resetApp();

 

删除应用程序

从设备中删除应用程序

 

driver.removeApp("com.example.AppName");

 

获取应用程序字符串

获取应用程序字符

 

Map appStrings =driver.getAppStringMap("en", "/path/to/file");

 

结束测试覆盖率

获取测试覆盖率数据

 

driver.endTestCoverage("Intent","/path");

 

13、文件

 

推送文件

将文件放置在设备的特定位置

 

driver.pushFile("/path/to/device/foo.bar",new File("/Users/johndoe/files/foo.bar"));

 

拉文件

从设备的文件系统中检索文件

 

byte[] fileBase64 =driver.pullFile("/path/to/device/foo.bar");

 

拉文件夹

从设备的文件系统中检索文件夹

 

byte[] folder =driver.pullFolder("/path/to/device/foo.bar");

 

14、互动

 

在设备上执行摇动操作

 

driver.shake();

 

锁定设备

 

driver.lockDevice();

 

开锁

解锁设备

 

driver.lockDevice();

driver.unlockDevice();

 

设备是否被锁定

检查设备是否被锁定

 

boolean isLocked = driver.isLocked();

 

旋转

旋转三维设备

 

driver.rotate(new DeviceRotation(10, 10,10));

 

15、按键

 

按键代码

按下设备上的特定按键

 

driver.pressKeyCode(AndroidKeyCode.SPACE,AndroidKeyMetastate.META_SHIFT_ON);

 

长按键代码

按住设备上的特定键码

 

driver.longPressKeyCode(AndroidKeyCode.HOME);

 

隐藏键盘

隐藏软键盘

 

driver.hideKeyboard();

 

显示键盘

是否显示软键盘

 

boolean isKeyboardShown =driver.isKeyboardShown();

 

16、网络

 

切换飞行模式

在设备上切换飞行模式

 

//Java不支持

 

切换数据

切换数据服务的状态

 

//Java不支持

 

切换WiFi

切换wifi服务的状态

 

//Java不支持

 

切换位置服务

切换位置服务的状态

 

driver.toggleLocationServices();

 

发简讯

模拟短信(仅适用于仿真器)

 

//Java不支持

 

GSM呼叫

拨打GSM电话(仅限Emulator)

 

//Java不支持

 

GSM信号

设置GSM信号强度(仅限仿真器)

 

//Java不支持

 

GSM语音

设置GSM语音状态(仅适用于仿真器)

 

//Java不支持

 

17、性能数据

 

获取性能数据

返回支持读取的系统状态信息,如CPU,内存,网络流量和电池

 

List>performanceData = driver.getPerformanceData("my.app.package","cpuinfo", 5);

 

获取性能数据类型

返回支持读取的系统状态的信息类型,如CPU,内存,网络流量和电池

 

List performanceTypes =driver.getSupportedPerformanceDataTypes();

 

18、模拟器

 

执行Touch ID

模拟触摸ID事件(仅适用于iOS模拟器)

 

driver.performTouchID(false);

//模拟失败的触摸

driver.performTouchID(true);

//模拟通过的触摸

 

切换触摸ID注册

切换正在注册的模拟器以接受touchId(仅适用于iOS模拟器)

 

driver.toggleTouchIDEnrollment(true);

 

19、系统

 

打开通知

打开Android通知(仅适用于仿真器)

 

driver.openNotifications();

 

获取系统栏

检索状态和导航栏的可见性和边界信息

 

Map systemBars =driver.getSystemBars();

 

获取系统时间

在设备上获取时间

 

String time = driver.getDeviceTime();

 

20、查找元素

 

查找元素

搜索页面上的元素

 

MobileElement elementOne = (MobileElement)driver.findElementByAccessibilityId("SomeAccessibilityID");

MobileElement elementTwo = (MobileElement)driver.findElementByClassName("SomeClassName");

 

21、操作

 

点击

点击中心点的元素

 

MobileElement el = driver.findElementByAccessibilityId("SomeId");

el.click();

 

发送键

将一系列击键发送到一个元素

 

MobileElement element = (MobileElement)driver.findElementByAccessibilityId("SomeAccessibilityID");

element.sendKeys("Hello world!");

 

清除元素

清除元素的值

 

MobileElement element = (MobileElement)driver.findElementByAccessibilityId("SomeAccessibilityID");

element.clear();

 

22、属性

 

获取元素文本

返回元素的可见文本

 

MobileElement element = (MobileElement)driver.findElementByClassName("SomeClassName");

let elText = element.getText();

 

获取标签名称

获取元素的标签名称

 

List element =(MobileElement)driver.findElementByAccessibilityId("SomeAccessibilityID");

String tagName = element.getTagName();

 

获取元素属性

获取元素属性的值

 

List element =(MobileElement) driver.findElementByAccessibilityId("SomeAccessibilityID");

String tagName =element.getAttribute("content-desc");

 

元素被选中

确定是否选择了表单或表单类元素(复选框,选择等)

 

MobileElement element = (MobileElement)driver.findElementByAccessibilityId("SomeAccessibilityID");

boolean isSelected = element.isSelected();

 

元素已启用

确定元素当前是否启用

 

MobileElement element = (MobileElement)driver.findElementByAccessibilityId("SomeAccessibilityID");

boolean isEnabled = element.isEnabled();

 

获取元素位置

确定元素在页面或屏幕上的位置

 

List element =(MobileElement)driver.findElementByAccessibilityId("SomeAccessibilityID");

Point location = element.getLocation();

 

获取元素大小

以像素为单位确定元素的大小

 

List element =(MobileElement) driver.findElementByAccessibilityId("SomeAccessibilityID");

Dimension elementSize = element.getSize();

 

获取元素矩形

获取元素的尺寸和坐标

 

List element =(MobileElement)driver.findElementByAccessibilityId("SomeAccessibilityID");

Rectangle rect = element.getRect();

 

获取元素CSS值

查询Web元素的计算CSS属性的值

 

List element =(MobileElement) driver.findElementById("SomeId");

String cssProperty =element.getCssValue("style");

 

在视图中获取元素位置

一旦将元素滚动到视图中,确定元素在屏幕上的位置

(主要是内部命令并且不被所有客户端支持)

 

//Java不支持

 

23、其他

 

提交表单

提交一个FORM元素

 

MobileElement element = (MobileElement)driver.findElementByClassName("SomeClassName");

element.submit();

 

获取活动元素

获取当前会话的活动元素

 

WebElement currentElement =driver.switchTo().activeElement();

 

元素是否相等

测试两个元素ID是否指向相同的元素

 

//重写equals方法的java对象

MobileElement elementOne = (MobileElement)driver.findElementByClassName("SomeClassName");

MobileElement elementTwo = (MobileElement)driver.findElementByClassName("SomeOtherClassName");

boolean isEqual =elementOne.equals(elementTwo);

 

24、上下文

 

获取当前上下文

获取Appium正在运行的当前上下文

 

String context = driver.getContext();

 

获取所有上下文

获取所有可用的自动化上下文

 

Set contextNames =driver.getContextHandles();

 

设置当前上下文

设置自动化的上下文

 

Set contextNames =driver.getContextHandles();

for (String contextName : contextNames) {

   System.out.println(contextNames);

//打印出NATIVE_APP/WEBVIEW_1

}

driver.context(contextNames.toArray()[1]);

//设置上下文为WEBVIEW_1

。。。。。。

driver.context("NATIVE_APP");

//设置上下文为NATIVE_APP

 

25、鼠标

 

将鼠标移至

将鼠标移动特定元素的偏移量

 

Actions action = new Actions(driver);

action.moveTo(element, 10, 10);

action.perform()

 

点击

在当前鼠标坐标点击任意鼠标按钮

 

Actions action = new Actions(driver);

action.moveTo(element);

action.click();

action.perform();

 

双击

双击当前鼠标坐标(由moveto设置)

 

Actions action = new Actions(driver);

action.moveTo(element);

action.doubleClick();

action.perform();

 

按钮关闭

在当前的鼠标坐标上单击并按住鼠标左键

 

Actions action = new Actions(driver);

action.moveTo(element);

action.clickAndHold();

action.perform();

 

释放先前保持的鼠标按钮

 

Actions action = new Actions(driver);

action.moveTo(element);

action.clickAndHold();

action.moveTo(element, 10, 10);

action.release();

action.perform();

 

26、触摸

 

单击

单击轻触设备

 

TouchActions action = newTouchActions(driver);

action.singleTap(element);

action.perform();

 

双击

使用手指动作事件双击触摸屏

 

TouchActions action = newTouchActions(driver);

action.doubleTap(element);

action.perform();

 

移动

手指在屏幕上移动

 

TouchActions action = newTouchActions(driver);

action.down(10, 10);

action.move(50, 50);

action.perform();

 

触摸下来

手指在屏幕上

 

TouchActions action = newTouchActions(driver);

action.down(10, 10);

action.move(50, 50);

action.perform();

 

润色(作小的修改)

手指在屏幕上

 

TouchActions action = newTouchActions(driver);

action.down(10, 10);

action.up(20, 20);

action.perform();

 

长按

使用手指运动事件长按触摸屏

 

TouchActions action = newTouchActions(driver);

action.longPress(element);

action.perform();

 

滚动

使用基于手指的动作事件在触摸屏上滚动

 

TouchActions action = newTouchActions(driver);

action.scroll(element, 10, 100);

action.perform();

 

拂去

使用手指运动事件轻击触摸屏

 

TouchActions action = newTouchActions(driver);

action.flick(element, 1, 10, 10);

action.perform();

 

多点触摸执行

执行多点触摸动作序列

 

TouchAction actionOne = new TouchAction();

actionOne.press(10, 10);

actionOne.moveTo(10, 100);

actionOne.release();

TouchAction actionTwo = new TouchAction();

actionTwo.press(20, 20);

actionTwo.moveTo(20, 200);

actionTwo.release();

MultiTouchAction action = newMultiTouchAction();

action.add(actionOne);

action.add(actionTwo);

action.perform();

 

触摸执行

执行一个触摸动作序列

 

TouchAction action = new TouchAction(driver);

action.press(10, 10);

action.moveTo(10, 100);

action.release();

action.perform();

 

27、窗口

 

切换到窗口

将焦点更改为另一个窗口(仅限Web上下文)

 

driver.switchTo().window("handle");

 

关闭窗口

关闭当前窗口(仅限Web上下文)

 

driver.close();

 

获取窗口句柄

检索当前窗口句柄(仅限Web上下文)

 

String windowHandle =driver.getWindowHandle();

 

获取所有窗口句柄

检索可用于会话的所有窗口句柄的列表(仅限Web上下文)

 

Set windowHandles =driver.getWindowHandles();

 

获取标题

获取当前页面标题(仅限Web上下文)

 

String title = driver.getTitle();

 

获取窗口大小

获取指定窗口的大小(仅限Web上下文)

 

Dimension windowSize =driver.manage().window().getSize();

 

设置窗口大小

更改指定窗口的大小(仅限Web上下文)

 

driver.manage().window().setSize(newDimension(10, 10));

 

获取窗口位置

获取指定窗口的位置(仅限Web上下文)

 

Point windowPosition =driver.manage().window().getPosition();

 

设置窗口位置

更改指定窗口的位置(仅限Web上下文)

 

driver.manage().window().setPosition(newDimension(10, 10));

 

最大化窗口

最大化指定的窗口(仅限Web上下文)

 

driver.manage().window().maximize();

 

28、导航

 

导航到URL

导航到新的URL(仅限Web上下文)

 

driver.get("http://appium.io/");

 

获取URL

检索当前页面的URL(仅限Web上下文)

 

String url = driver.getCurrentUrl();

 

前进

如果可能,在浏览器历史记录中向前浏览(仅限Web上下文)

 

driver.forward();

 

刷新

刷新当前页面(仅限Web上下文)

 

driver.refresh();

 

29、Cookie

 

获取所有Cookie

检索当前页面可见的所有cookie(仅限Web上下文)

 

Set allcookies =driver.manage().getCookies();

 

设置Cookie

设置一个cookie(仅限Web上下文)

 

driver.manage().addCookie(newCookie("foo", "bar"));

 

删除Cookie

删除具有给定名称的cookie(仅限Web上下文)

 

driver.manage().deleteCookieNamed("cookie_name");

 

删除所有Cookie

删除当前页面可见的所有cookie(仅限Web上下文)

 

driver.manage().deleteAllCookies();

 

30、Frame

 

切换到帧

将焦点更改为页面上的其他框架(仅限Web上下文)

 

driver.switchTo().frame(3);

 

切换到父框架

将焦点更改为父上下文(仅限Web上下文)

 

driver.switchTo().parentFrame();

 

31、JavaScript

 

执行脚本

将JavaScript片段注入页面以在当前选定框架的上下文中执行(仅限Web上下文)

 

((JavascriptExecutor)driver).executeScript("window.setTimeout(arguments[arguments.length - 1],500);");

 

执行异步脚本

将JavaScript片段注入页面以在当前选定框架的上下文中执行(仅限Web上下文)

 

((JavascriptExecutor)driver).executeAsyncScript("window.setTimeout(arguments[arguments.length -1], 500);");

 


你可能感兴趣的:(Appium(Java))