文档章节

Appium中部分api的使用方法

 天谕
发布于 2017/02/04 16:39
字数 505
阅读 39
收藏 0

使用的语言是java,appium的版本是1.3.4,java-client的版本是java-client-2.1.0,建议多参考java-client-2.1.0-javadoc。

1.使用AndroidDriver,其已经继承了AppiumDriver

 

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

    private AndroidDriver driver;

 

@Before

public void setUp() throws Exception {

    DesiredCapabilities capabilities = new DesiredCapabilities();

    capabilities.setCapability("deviceName", "Android Emulator");

    capabilities.setCapability("platformVersion", "4.4");

    capabilities.setCapability("platformName", "Android");

    capabilities.setCapability("appPackage", "com.android.settings");

    capabilities.setCapability("appActivity", ".Settings");

 

    driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),

            capabilities);

}

 

@After

public void tearDown() throws Exception {

    driver.quit();

}

2.截屏并保存至本地

 

?

1

2

3

4

5

6

7

8

        //截屏并保存至本地

File screen = driver.getScreenshotAs(OutputType.FILE);

File screenFile = new File("d:\\screen.png");

try {

    FileUtils.copyFile(screen, screenFile); //commons-io-2.0.1.jar中的api

} catch (IOException e) {

    e.printStackTrace();

}


3.push文件、pull文件

 

 

?

1

2

3

4

5

6

7

8

9

10

11

12

13

    File file = new File("d:\\test.txt"); //test.txt内容为"test"

String content = null;

try {

    content = FileUtils.readFileToString(file);

} catch (IOException e) {

    e.printStackTrace();

}

 

byte[] data = Base64.encodeBase64(content.getBytes());

driver.pushFile("sdcard/test.txt", data);

 

byte[] resultDate = driver.pullFile("sdcard/test.txt");

System.out.println(new String(Base64.decodeBase64(resultDate))); //打印结果为"test"


4.

 

 

?

1

2

//获取当前界面的activity,可用于断言是否跳转到预期的activity

driver.currentActivity();


5.

?

1

2

//打开通知栏界面

driver.openNotifications();

6.

 

 

?

1

2

3

4

5

6

7

8

//获取网络状态

int status = driver.getNetworkConnection().value;

System.out.println(status);

 

//设置网络状态

driver.setNetworkConnection(new NetworkConnectionSetting(status));

//或者

driver.setNetworkConnection(new NetworkConnectionSetting(false, true, false));

7.

 

 

?

1

2

//启动其他应用,跨APP

driver.startActivity("com.android.camera", ".CameraLauncher");

8.

 

 

?

1

2

3

4

//自动滑动列表

driver.scrollTo("text");

//或者

driver.scrollToExact("text");

9.

?

1

2

3

4

5

        //安装APP

driver.installApp(appPath);

 

//判断应用是否已安装

driver.isAppInstalled("package name");

10.

 

 

?

1

2

3

//拖动相机图标至日历图标位置

new TouchAction(driver).longPress(driver.findElementByName("相机"))

.moveTo(driver.findElementByName("日历")).release().perform();

11.

 

 

?

1

2

3

4

5

        //锁屏

driver.lockScreen(2);

 

//判断是否锁屏

driver.isLocked();

12.

 

 

?

1

2

        //发送按键事件

driver.sendKeyEvent(AndroidKeyCode.HOME);

13.

 

?

1

2

3

4

5

6

7

8

9

<span style="color:#ff0000;"> </span>

                //通过uiautomator定位clickable属性为true的元素并点击

        driver.findElementByAndroidUIAutomator("new UiSelector().clickable(true)").click();

         

        //相同属性的元素使用List存放

        List<webelement> elements = driver.findElementsByClassName("class name");

        elements.get(0).click(); //点击List中的第一个元素

        //tap,点击元素位置

        driver.tap(1, driver.findElementByName("日期和时间"), 0);</webelement>

本文转载自:http://www.2cto.com/kf/201501/368019.html

粉丝 0
博文 11
码字总数 14548
作品 0
东城
程序员
私信 提问

暂无文章

读书笔记:深入理解ES6 (五)

第五章 解构:使数据访问更便捷 第1节 为什么使用解构功能?   在ES5中,开发者们从对象、数组中获取特定数据并赋值给变量,编写了很多看起来同质化的代码。例如: 1 let options = {2 ...

张森ZS
30分钟前
24
0
CentOS7 yum方式安装MySQL5.7

在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB。 1 下载并安装MySQL官方的 Yum Repository [root@localho...

roockee
39分钟前
15
0
Allegro三种自定义设置快捷键的方法

Allegro自定义设置快捷键的三种方法: 1、在Allegro PCB editor 命令窗口直接定义 2、通过修改用户变量env文件来设置快捷键 3、定义笔画为快捷键 1、在Allegro PCB editor 命令窗口直接定义 ...

demyar
43分钟前
18
0
如何做一张能让人眼前一亮的大屏?

作为在职场驰骋的社会人,提到数据可视化大家应该都不陌生了。数据可视化的作用也不用我多说,主要是利用图形化手段,更清晰直观地将数据展示。多层次、交互式的可视化分析能够方便决策者理解...

朕想上头条
44分钟前
9
0
TL138/1808/6748-EthEVM开发板硬件CPU、FLASH、RAM

TL138/1808/6748-EthEVM是广州创龙基于SOM-TL138/1808/6748核心板开发的一款开发板,具有三个网络接口。由于SOM-TL138/1808/6748核心板管脚兼容,所以此三个核心板共用同一个底板。开发板采用...

Tronlong创龙
48分钟前
16
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部