用idea编写appium用例

1. 安装ContactManagers.spk:

路径apps/ContactManager/ContactManagers.spk

2.
打开用例到IntelliJ:

Open -- 选中appium/sample-code/examples/java/junit/pom.xml打开

3.
环境配置:

如果依赖的jar包没有加载进来,可能需要配置maven的路径

4.
运行测试用例:

右点选中AndroidContactsTest — Run‘AndroidContactsTest‘

用例欣赏:

package com.saucelabs.appium;

import io.appium.java_client.AppiumDriver;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;

import java.io.File;
import java.net.URL;
import java.util.List;

public class AndroidContactsTest {
    private AppiumDriver driver;

    @Before
    public void setUp() throws Exception {
        // set up appium
        File classpathRoot = new File(System.getProperty("user.dir"));
        File appDir = new File(classpathRoot, "../../../apps/ContactManager");
        File app = new File(appDir, "ContactManager.apk");
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability("device","Android");
        capabilities.setCapability(CapabilityType.BROWSER_NAME, "");
        capabilities.setCapability(CapabilityType.VERSION, "4.4");
        capabilities.setCapability("app", app.getAbsolutePath());
        capabilities.setCapability("app-package", "com.example.android.contactmanager");
        capabilities.setCapability("app-activity", ".ContactManager");
        driver = new AppiumDriver(new URL("http://0.0.0.0:4723/wd/hub"), capabilities);
    }

    @After
    public void tearDown() throws Exception {
        driver.quit();
    }

    @Test
    public void addContact(){
        WebElement el = driver.findElement(By.name("Add Contact"));
        el.click();
        List<WebElement> textFieldsList = driver.findElementsByClassName("android.widget.EditText");
        textFieldsList.get(0).sendKeys("Some Name");
        textFieldsList.get(2).sendKeys("[email protected]");
        //driver.swipe(100, 500, 100, 100, 2);
        driver.findElementByName("Save").click();
    }

}

二.
新建自己的测试工程

  1. 步骤: New Project -- Maven -- 输入Project name -- Project location -- Next -- Next
  2. 加入pom依赖
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>LATEST</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>io.appium</groupId>
            <artifactId>java-client</artifactId>
            <version>1.0.2</version>
        </dependency>
        <dependency>
            <groupId>com.googlecode.json-simple</groupId>
            <artifactId>json-simple</artifactId>
            <version>1.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
            <scope>test</scope>
        </dependency>
        <!-- Includes the Sauce JUnit helper libraries -->
        <dependency>
            <groupId>com.saucelabs</groupId>
            <artifactId>sauce_junit</artifactId>
            <version>1.0.18</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.2.4</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
            </plugin>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.5</source>
                    <target>1.5</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <repositories>
        <repository>
            <id>saucelabs-repository</id>
            <url>https://repository-saucelabs.forge.cloudbees.com/release</url>
            <releases>
                <enabled>true</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>

用例开始

package com.wirelessqa.android;

import io.appium.java_client.AppiumDriver;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;

import java.io.File;
import java.net.URL;
import java.util.concurrent.TimeUnit;

/**
 * Created by bixiaopeng on 14-5-13.
 */
public class appium {

    private AppiumDriver driver;

    @Before
    public void setUp() throws Exception {

        File classpathroot = new File(System.getProperty("user.dir"));
        File appDir = new File(classpathroot, "apk");
        File app = new File(appDir, "xiamimusic.apk");
        System.out.print(app.getAbsolutePath());
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability(CapabilityType.BROWSER_NAME, "");
        capabilities.setCapability(CapabilityType.VERSION, "4.4");
        capabilities.setCapability("app", app.getAbsolutePath());
        capabilities.setCapability("app-package", "fm.xiami.main");
        capabilities.setCapability("app-activity", "fm.xiami.bmamba.activity.StartActivity");
        driver = new AppiumDriver(new URL("http://0.0.0.0:4723/wd/hub"), capabilities);

    }

    @Test
    public void login() throws Exception {
        //判断某个元素是否显示
        if (driver.findElement(By.name("是否创建桌面快捷方式")).isDisplayed()) {
            driver.findElement(By.name("确定")).click();
        }
        driver.findElement(By.name("我的音乐")).click();

        driver.findElementByName("点击头像登录").click();
        driver.findElementByName("虾米账户登录").click();
        //输入字符
        driver.findElementByName("输入邮箱地址").sendKeys("********");
        //通过id查找
        driver.findElement(By.id("fm.xiami.main:id/edit_password")).sendKeys("****");
        driver.findElementById("fm.xiami.main:id/btn_login").click();
        String userName = driver.findElementById("fm.xiami.main:id/user_name").getText();
        //断言
        assertEquals(userName, "老毕");

    }

    @After
    public void tearDown() throws Exception {
        driver.quit();
    }

}

注意JDK版本的选择

Open Module Setting -- Language level: 5.0

微信公众帐号:
wirelessqa

关于作者:

作者: 毕小朋 | 老 毕 邮箱: [email protected]

微博: @WirelessQA 博客: http://blog.csdn.net/wirelessqa

用idea编写appium用例

时间: 2024-08-09 10:42:46

用idea编写appium用例的相关文章

使用python编写appium用例

安装Python依赖 pip3.4 install nose pip3.4 install selenium pip3.4 install Appium-Python-Client 运行测试用例android_contacts.py import os import unittest from appium import webdriver from time import sleep # Returns abs path relative to this file and not cwd PA

《编写有效用例》阅读笔记之二

基 于数据库操作的小用力称为CRUD用例,每个小用例都表达了单独需求,在处理这种用例是会有两种不同的方法,可以将其分离或者先使用单个管理实体用例对其 处理.在提取系统用例时或有许多用例大致相同,对此可能会建立一种通用搜索机.用例每个目标步骤的命名类似于编程语言中的子过程调用,而且用例是有人而不 是计算机使用.搜索任何东西都会有相同的步骤,对此为了方便操作我们可以建立一个参数化用例,为每个用例起一个别名.然后将别名数据值划分为三个不同的精 度级别,可以在一定程度上简化用例描述. 当对业务过程进行建

《编写有效用例》-读后感1

我首先读的是编写有效用例这本书,该书引言首先对什么什么是用例做出了解释,我的理解中用例就是不同用户与系统实现交互的一个个典型场景的描述,这几个用例基本模式一样都是先下几个定义例如主执行者.范围.层次项目相关人员和利益,前置条件等等,通过这些来描述用户主要场景,与我自己认知不同的是我认为用例必须用用例图来表示,不过语言文本的表示也是挺清晰的,无论是业务人员还是软硬件开发人员还是设计人员都可以通过用例来描述需求,关于用例黑盒子就是不用太关心具体的细节,说的挺对不同的方法适用于不同环境,软件的规模不同

《编写有效用例》阅读笔记01

<编写有效用例>是美国AlistairCockburn的著作 全书分为三部分:1.用例体部分2.在需求分析过程中经常遇到的问题3.对忙于编写用例的人的提示 今天我主要阅读了第一部分. 在作者的引导下思考了以下问题: 1.  什么是用例? 例用于表示系统所提供的服务,它定义了系统是如何被参与者所使用的,它描述的是参与者为了使用系统所提供的某一完整功能而与系统之间发生的一段对话. 用例是从用户角度描述系统的行为.它将系统的一个功能描述成一系列事件,这些事件最终对参与者产生有价值的可观测结果 用例是

appium样例代码

appium样例代码 com.appium.driver包下创建InitDriver.java类: package com.appium.driver; import java.io.File; import java.net.MalformedURLException; import java.net.URL; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.remote.Rem

编写有效用例_阅读笔记01

粗略浏览整本书,我对它第一印象并不是很好,不然也不会迟迟未看下去.然而,耐着性子学习,却发现我们所学习的软件工程的相关课程,万变不离其宗,整个系统是一致的.换句话说,一个系统做下来,并不是单单一门课就可以解决的事,其间蕴含了所有学习的或还未学习的内容. 用例这个概念曾在学习UML中有提及,当时用例的概念仅仅止步于“用客户或用户的语言和词汇来描述的系统的一个完整功能”.紧接着,学习的重点便是用例图和其他图的绘制.在UML中强调的是使用图绘的方式来描述用例之间的“关联关系”.“泛化关系”.“包含关系

《编写有效用例》阅读笔记之一

1.完整正式的用例格式:(1)单列文字(不是一个表格)(2)步骤编号(3)没有条件语句(4)扩展部分的编号规则是数字和字母的组合 完整正式的用例模板<名字> <用例名应该是一个用主动语态动词短语来表示的用例目标> 使用语境:<目标较长的描述,如果需要,还包括触发事件> 范围:<设计范围,在设计时将系统作为一个黑盒来考虑> 级别:<概要.用户目标.子功能三者之一> 主执行者:<主执行这的角色名称或主执行者的描述> 项目相关人员和利益:&

《编写有效用例》读书笔记一

用例是代表系统中各个项目相关人员之间就系统的行为所达成的契约.用例描述了在不同的条件下,系统对某一项目相关人员的请求所作出的响应.根据执行者作出的请求和请求涉及的条件,系统将执行不同的行为序列,每一行为序列称之为一个场景,一个用例是多个不同场景的集合.用例能够在项目组中激发对项目系统的讨论.编写一个好的用例需要掌握范围,主执行者,层次三个概念.用例可用于描述一个业务工作过程:集中讨论未来系统的需求问题,而不是需求描述:作为系统的功能性需求:将系统设计结果文档化:应用广泛.编写准确的需求需要理解技

编写有效用例_阅读笔记04

第十一章作为本书的第一部分的最后一个章节,提供了几种可供选择的用例格式.第一种是完整正式的用例格式,首先是单列文字,其次没有条件语句,最后便是扩展的部分的编号规则是数字和字母的组合.我个人在看了本书之后,比较喜欢这种格式,其原因一是从前看到后看习惯了,另一个原因就是扩展部分的编号规则更能让我接受. 在看了几个格式后,不禁好奇,怎么会有这么多种的模板来参照,如此不严谨的确不像是我们这类工程类的文档的要求,往后看才知道,原来影响用例书写格式的因素很多,从社会文化到理解层次到项目人员的相关要求到经验到