美文网首页
[Appium]使用android studio+java+ap

[Appium]使用android studio+java+ap

作者: 街角的那只喵 | 来源:发表于2019-03-26 14:34 被阅读0次

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


    image.png

    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%\platform-tools;%Android_Home%\tools;
    3.android studio
    这个直接安装就可以了,可以安装到其他盘,不一定是C盘
    4.appium
    直接点击安装,安装完成后
    classpath中:
    变量值:APPIUM_HOME
    变量名:C:\Program Files (x86)\Appium
    path中:
    %APPIUM_HOME%\node_modules.bin

    image.png

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


    image.png image.png image.png
    image.png
    image.png
    最后点击finish,然后应该为这样:
    image.png
    然后new module
    image.png
    选择 java library
    image.png
    image.png
    此处我创建的是一个名叫demoTest的library
    创建完成之后是这样的:
    image.png
    image.png
    2.项目创建完成之后,需要创建一个文件夹
    在项目的java目录下,创建一个名叫apps的文件夹,apps文件夹的目的是存放apk文件。
    image.png
    4.下载官方apk文件:
    地址:https://github.com/appium-boneyard/sample-code/blob/master/sample-code/apps/ContactManager/ContactManager.apk
    image.png
    下载好之后,将apk文件放入刚刚创建的apps文件夹中
    5.官方例子中有各种测试脚本的例子。官方地址为:
    https://github.com/appium-boneyard/sample-code/tree/master/sample-code/examples/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包导入
    File--->project sturcture


    image.png
    image.png
    image.png

    点击+号,选择第一个,第一个是从网络加载
    现在我们需要3个jar包


    image.png
    在搜索框中输入appium,进行搜索
    image.png
    在搜索框中输入testng进行搜索
    image.png
    在搜索框中输入selenium进行搜索
    image.png

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


    image.png
    此处host与上文代码中的地址保持一致,点击start server 1.10.0
    image.png
    启动成功
    8.开始运行脚本
    连上手机或者模拟器,运行脚本
    image.png
    可以点击这个按钮运行
    image.png
    也可以在AndroidContacatTest文件点击右键,选择run AndroidContacatTest 运行

    相关文章

      网友评论

          本文标题:[Appium]使用android studio+java+ap

          本文链接:https://www.haomeiwen.com/subject/elpgvqtx.html