使用android studio+java+appium进行自动化测试


一,准备好需要安装的软件
1.JDK
2.sdk
3.android studio
4.appium最新版为1.10.0
5.安卓模拟器或真机
6.一些需要的罐子包,方式添加详细下文说明
二,环境变量
1.JDK
安装好JDK之后,进行环境变量配置

 

classpath中:
变量名:%JAVA_HOME%
变量值:C:\ Program Files \ Java \ jdk1.8.0_131(找到自己jdk安装路径即可)path中:
%JAVA_HOME%\ bin;
2.SDK
将sdk解压到某个盘,sdk的路径不要包含中文 .classpath
中:
变量名:%
Android_Home %变量值:D:\ Android \ androidsdk(此处是自己的安装路径)
在path中添加:
%Android_Home%\平台工具;%Android_Home%\工具;
3.android studio
这个直接安装就可以了,可以安装到其他盘,不一定是C盘
4.appium直接
点击安装,安装完成后
类路径中:
变量值:APPIUM_HOME
变量名:C:\ Program Files(x86) \ Appium
路径中:
%APPIUM_HOME%\ node_modules.bin

 

三,使用android studio编写测试脚本(此处先以运行官方演示为例)
1。创建项目
因为android studio不能直接新建java项目,所以需要先创建一个android项目

 

 

 

 


最后点击完成,然后应该为这样:


然后新模块


选择java库

 


此处我创建的是一个名叫demoTest的库
创建完成之后是这样的:

 


2.项目创建完成之后,创建³³需要一个文件夹数
在项目的的java目录下,创建一个名叫应用的文件夹,应用程式文件夹的目的是存放APK文件。


4.下载官方apk文件:
地址:https//github.com/appium-boneyard/sample-code/blob/master/sample-code/apps/ContactManager/ContactManager.apk


下载好之后,将apk文件放入刚刚创建的应用文件夹中
5.官方例子中有各种测试脚本的例子。官方地址为:
https//github.com/appium-boneyard/sample-code/tree /主/样本码/示例/ JAVA
由于这里需要对官方代码有一些改动,所以我直接粘贴过来,直接复制就行
 

public class AndroidContactaTest {
    private AppiumDriver<AndroidElement> mobiledriver;
    private SwipeClass swipe;

    @BeforeTest
    public void beforeTest( ) throws MalformedURLException {
        File classpathRoot = new File(System.getProperty("user.dir"));
        //app的目录
        File appDir = new File(classpathRoot, "/src/main/java/apps/");
        //app的名字,对应你apps目录下的文件
        File app = new File(appDir, "ContactManager.apk");

        DesiredCapabilities capabilities = new DesiredCapabilities();
        //appium的版本
        capabilities.setCapability(MobileCapabilityType.APPIUM_VERSION, "1.10.0");
        //android系统的版本
        capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "5.1.1");
        //系统
        capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME,"Android");
        //
        capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME,"Appium");
        //设备名称 模拟器名称
        capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "yyf");
        capabilities.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());
        //设置app的包名
        capabilities.setCapability("appPackage", "com.example.android.contactmanager");
        //设置app的启动activity
        capabilities.setCapability("appActivity", ".ContactManager");
        capabilities.setCapability("newCommandTimeout", 2000);
//此处的地址是appium中的host地址,可以自己修改,只要与appium对应就可以
        mobiledriver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
    }

    @AfterTest
    public void afterTest( ) {
        mobiledriver.quit();
    }

    /**
     * 要执行的的测试方法
     */
    @Test
    public void addContact(){
        //利用Xpath的方法寻找text值为Add Contact的控件
        WebElement el = mobiledriver.findElement(By.xpath(".//*[@text='Add Contact']"));
        //点击这个控件
        el.click();
        //利用类名获取界面上所有的EditText
        List<AndroidElement> textFieldsList = mobiledriver.findElementsByClassName("android.widget.EditText");
        //第一个EditText输入内容Some Name
        textFieldsList.get(0).sendKeys("Some Name");
        //第三个EditText输入内容Some Name
        textFieldsList.get(2).sendKeys("Some@example.com");
        //在坐(100,500)滑动到(100,100) 时间为2毫秒
        swipe.swipeToDown(mobiledriver);
        //用xpath的方式寻找到text值为Save的控件,然后点击
        mobiledriver.findElementByXPath(".//*[@text='Save']").click();
    }
}

直接复制粘贴就好,由于appium 1.10不支持swipe滑动来定义坐标,所以我们需要自己创建一个类,我创建的类名为SwipeClass对应
的代码为:

public class SwipeClass {

        static Duration duration=Duration.ofSeconds(1);
        public void swipeToUp(AppiumDriver driver) {
            int width = driver.manage().window().getSize().width;
            int height = driver.manage().window().getSize().height;
            TouchAction action1=new TouchAction(driver).press(PointOption.point(width/2, height*3/4)).waitAction(WaitOptions.waitOptions(duration))
                    .moveTo(PointOption.point(width/2, height/4)).release();
            action1.perform();
        }


        public void swipeToDown(AppiumDriver driver) {
            int width = driver.manage().window().getSize().width;
            int height = driver.manage().window().getSize().height;
            TouchAction action2=new TouchAction(driver).press(PointOption.point(width/2, height/4)).waitAction(WaitOptions.waitOptions(duration))
                    .moveTo(PointOption.point(width/2, height*3/4)).release();
            action2.perform();
        }

        public void swipeToLeft(AppiumDriver driver) {
            int width = driver.manage().window().getSize().width;
            int height = driver.manage().window().getSize().height;
            TouchAction action3=new TouchAction(driver).press(PointOption.point(width*3/4, height/2)).waitAction(WaitOptions.waitOptions(duration))
                    .moveTo(PointOption.point(width/4,height/2)).release();
            action3.perform();
        }


        public void swipeToRight(AppiumDriver driver) {
            int width = driver.manage().window().getSize().width;
            int height = driver.manage().window().getSize().height;
            TouchAction action4=new TouchAction(driver).press(PointOption.point(width / 4, height / 2)).waitAction(WaitOptions.waitOptions(duration))
                    .moveTo(PointOption.point(width*3/4,height/2)).release();
            action4.perform();
        }
}

现在发现代码中会有一些错误,原因是因为我们没有导入需要的jar包。接下来我们开始导入jar包
6.jar包导入
文件--->项目结构

 

 

 

点击+号,选择第一个,一个第的英文从网络加载
现在我们需要3个罐包


在搜索框中输入appium,进行搜索


在搜索框中输入TestNG中进行搜索


在搜索框中输入硒进行搜索

 

然后点击确定。加载之后再在错误上点击ALT + ENTER将包导入
7.启动appium此时
代码准备就绪,启动appium


此处主机与上文代码中的地址保持一致,点击启动服务器1.10.0


启动成功
8.运行开始脚本
连上手机或者模拟器,运行脚本


可以点击这个按钮运行

感谢:https://www.jianshu.com/p/dc79198868c5

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值