美文网首页
appium录制脚本和回放

appium录制脚本和回放

作者: testerPM | 来源:发表于2020-03-11 15:48 被阅读0次

    --------------------------------------------如何录制脚本-------------------------------

    步骤如下:
    (1) 点击录制按钮


    image.png

    (2)点击 【选择元素】按钮


    image.png

    (3)选择 我的柠檬-》右边点击


    image.png
    image.png

    (4)选择头像-》右边点击


    image.png

    (5)点击 用户名 -》点击 发送密钥 -》输入用户名
    (6)点击 密码-》点击 发送密钥-》输入密码
    (7) 选 登录元素-》右边点击 【点击】
    (8)再次点击录制,即停止录制

    如何查看全部的录制脚本


    image.png

    上图点击右上角,可以看到全部的脚本,全部脚本如下:

    import io.appium.java_client.MobileElement;
    import io.appium.java_client.android.AndroidDriver;
    import junit.framework.TestCase;
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    import java.net.MalformedURLException;
    import java.net.URL;
    import org.openqa.selenium.remote.DesiredCapabilities;
    
    public class SampleTest {
    
      private AndroidDriver driver;
    
      @Before
      public void setUp() throws MalformedURLException {
        DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
        desiredCapabilities.setCapability("deviceName", "127.0.0.1:62001");
        desiredCapabilities.setCapability("platformName", "Android");
        desiredCapabilities.setCapability("appPackage", "com.lemon.lemonban");
        desiredCapabilities.setCapability("appActivity", "com.lemon.lemonban.activity.WelcomeActivity");
    
        URL remoteUrl = new URL("http://localhost:4723/wd/hub");
    
        driver = new AndroidDriver(remoteUrl, desiredCapabilities);
      }
    
      @Test
      public void sampleTest() {
        MobileElement el1 = (MobileElement) driver.findElementByXPath("//android.widget.FrameLayout[@content-desc=\"我的柠檬\"]/android.widget.ImageView");
        el1.click();
        MobileElement el2 = (MobileElement) driver.findElementById("com.lemon.lemonban:id/fragment_my_lemon_avatar_title");
        el2.click();
        MobileElement el3 = (MobileElement) driver.findElementById("com.lemon.lemonban:id/et_mobile");
        el3.sendKeys("13323234545");
        MobileElement el4 = (MobileElement) driver.findElementById("com.lemon.lemonban:id/et_password");
        el4.sendKeys("123456");
        MobileElement el5 = (MobileElement) driver.findElementById("com.lemon.lemonban:id/btn_login");
        el5.click();
      }
    
      @After
      public void tearDown() {
        driver.quit();
      }
    }
    
    
    

    -----------------------------------------------------如何回放脚本---------------------------------------

    把上面的代码copy到eclispe执行,代码copy过去,发现有报错->这是因为需要导入依赖

    image.png

    第一个依赖:java_client


    image.png

    第二个依赖:Junit


    image.png

    pom引入依赖之后,代码就不报错了,然后可以运行脚本,看一下效果-》

    录制脚本改造如下(就引入了2个包,其他未做修改)

    package com.lemon.day01;
    
    import io.appium.java_client.MobileElement;
    import io.appium.java_client.android.AndroidDriver;
    import junit.framework.TestCase;
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    import java.net.MalformedURLException;
    import java.net.URL;
    import org.openqa.selenium.remote.DesiredCapabilities;
    
    public class RecordTestShell {
    
        private AndroidDriver driver;
    
        @Before
        public void setUp() throws MalformedURLException {
            DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
            desiredCapabilities.setCapability("deviceName", "127.0.0.1:62001");
            desiredCapabilities.setCapability("platformName", "Android");
            desiredCapabilities.setCapability("appPackage", "com.lemon.lemonban");
            desiredCapabilities.setCapability("appActivity", "com.lemon.lemonban.activity.WelcomeActivity");
    
            URL remoteUrl = new URL("http://localhost:4723/wd/hub");
    
            driver = new AndroidDriver(remoteUrl, desiredCapabilities);
        }
    
        @Test
        public void sampleTest() {
            MobileElement el1 = (MobileElement) driver
                    .findElementByXPath("//android.widget.FrameLayout[@content-desc=\"我的柠檬\"]/android.widget.ImageView");
            el1.click();
            MobileElement el2 = (MobileElement) driver
                    .findElementById("com.lemon.lemonban:id/fragment_my_lemon_avatar_title");
            el2.click();
            MobileElement el3 = (MobileElement) driver.findElementById("com.lemon.lemonban:id/et_mobile");
            el3.sendKeys("13323234545");
            MobileElement el4 = (MobileElement) driver.findElementById("com.lemon.lemonban:id/et_password");
            el4.sendKeys("123456");
            MobileElement el5 = (MobileElement) driver.findElementById("com.lemon.lemonban:id/btn_login");
            el5.click();
        }
    
        @After
        public void tearDown() {
            driver.quit();
        }
    
    }
    
    
    

    右键 Run as ->JUnit Test (因为脚本里用到的是Junit注解),运行发现脚本报错了


    image.png

    这是因为app启动是需要一定时间的,而代码却执行很快-》所以需要加等待(所以录制的脚本不一定可以直接拿过来使用,还是需要进行优化的),优化的部分如下:


    image.png

    再重新执行脚本(RecordTestShell.java),成功执行。但是上述脚本中是没有断言的,没有断言的脚本是没有灵魂的

    注意:
    (1)eclipse执行脚本,夜神模拟器一定要打开,如下图即可


    image.png

    (2)adb connect 要连接上设备

    image.png

    (3)appium要启动(可以不用打开会话器),如下图即可

    image.png

    ----------------------------------------Junit切换成Testng--------------------------------------

    (1)pom依赖换成testng

    image.png

    (2)代码中的注解换成Testng的

    image.png

    (3)再Run as ->Testng test ,可以执行成功

    总结:
    (1)脚本的录制:使用appium检查器会话进行录制(可以录制java,也可以录制python)


    image.png

    (2)脚本回放(appium没有回放的功能,需要使用其他的工具,如eclipse):
    1)复制录制的脚本
    2) 脚本改后缀名.java
    3)eclipse创建maven工程,复制java文件到工程当中
    4)pom文件引入依赖,1.java-client 2.junit
    (3) java-client引入不需要引入selenium

    因为:引入java-client.jar(带有selenium-java.java,这里的版本是3.12.0)


    image.png

    java_client包 Compile Dependencies(编译依赖如下图:)


    image.png image.png (4)到这里讲到的都是appium的简单模式 image.png

    下面开始看一下appium的高级设置

    -----------------------------------appium的高级设置------------------------------

    日志文件路径:appium服务启动时会有很多日志输出,如果你想将日志保存到一个文件了,在这里就可以设置
    日志级别:根据设置的日志级别打印日志,比如设置debug,则会将debug级别以上的日志都会输出出来的
    覆盖会话:比如你已经启动了一个会话,这时你又启动了第二个会话,如果勾选了这一项,第一个会话就会被停掉,而只启动第二个会话

    记录时间戳:勾选,日志就会有时间戳


    image.png

    不勾选,日志就没有时间


    image.png

    禁用协议颜色:此项勾选,打印的日志协议紫色就是黑白显示

    Android启动端口:


    image.png image.png

    Selenderoid端口:已不用了,因为这个端口是只针对安卓4.2以下的版本用到的技术
    现在安卓版本都已经5.0以上了

    Chromediver端口:app有些页面是web页面,如微信里面的微信公众号,文章,新闻

    一般能用浏览器访问的页面,都是b/s架构的web页面,当你需要做app内置的web页面自动化,就需要这是Chromediver端口 以及Chromediver驱动路径 image.png

    预设:


    image.png

    相关文章

      网友评论

          本文标题:appium录制脚本和回放

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