阅读 78

appium基础(一)

appium

测试用例的重要组成

  • 启动appium

    • 启动参数 --session-override
    • 获得可访问的url
    • 准本手机设备或者虚拟机
  • 编写脚本

    • 导入依赖
    • capabilities设置
    • 元素定位与操作find+action
    • 断言assert
    	import io.appium.java_client.MobileElement;
    import io.appium.java_client.TouchAction;
    import io.appium.java_client.android.AndroidDriver;
    import io.appium.java_client.touch.offset.PointOption;
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    import org.openqa.selenium.Dimension;
    import org.openqa.selenium.Point;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.remote.DesiredCapabilities;
    
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.util.concurrent.TimeUnit;
    
    public class demoTest {
    
        private AndroidDriver driver;
    
        @Before
        public void setUp() throws MalformedURLException {
            DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
            //desiredCapabilities.setCapability("deviceName", "192.168.71.101:5555");
            desiredCapabilities.setCapability("deviceName", "192.168.242.105:5555");
            desiredCapabilities.setCapability("platformName", "Android");
            desiredCapabilities.setCapability("appPackage", "com.DaTong.InsuranceForAndroid");
            desiredCapabilities.setCapability("appActivity", ".StartActivity");
            desiredCapabilities.setCapability("ensureWebviewsHavePages", true);
    
            URL remoteUrl = new URL("http://localhost:4723/wd/hub");
    
            driver = new AndroidDriver(remoteUrl, desiredCapabilities);
    
        }
    
        @Test
        public void sampleTest() throws InterruptedException {
            TimeUnit.SECONDS.sleep(5);
            MobileElement el1 = (MobileElement) driver.findElementById("com.DaTong.InsuranceForAndroid:id/buttonOK");
            el1.click();
            WebElement elem = driver.findElementById("com.DaTong.InsuranceForAndroid:id/image");
            Point start = elem.getLocation();
            TouchAction ta = new TouchAction(driver);
            int startX = start.x;
            int startY = start.y;
            Dimension q = elem.getSize();
            int x = q.getWidth();
            int y = q.getHeight();
            int endX = x + startX;
            int endY = y + startY;
            int centreX = (endX + startX) - 2;
            int centreY = (endY + startY) - 2;
            Point a = new Point(centreX,centreY);
            Point b = new Point(centreX/10,centreY);
            ta.press(PointOption.point(a)).moveTo(PointOption.point(b)).release().perform();
            ta.press(PointOption.point(a)).moveTo(PointOption.point(b)).release().perform();
            ta.press(PointOption.point(a)).moveTo(PointOption.point(b)).release().perform();
            MobileElement el2 = (MobileElement) driver.findElementById("com.android.packageinstaller:id/permission_allow_button");
            el2.click();
            el2.click();
            MobileElement el3 = (MobileElement) driver.findElementByXPath("//*[@resource-id=‘com.DaTong.InsuranceForAndroid:id/tvIconTitle‘ and @text=‘计划书‘]");
            el2.click();
    
    
        }
    
        @After
        public void tearDown() {
           // driver.quit();
        }
    
    }
    
    
    
    
    
    

获取app的入口

  • platformName
  • deviceName
  • app入口
    • Android:appPackage+appActivity。获取方法如下:
      • Windows:adb -s 192.168.71.101:5555 logcat -s ActivityManager
      • Linux:adb -s 192.168.71.101:5555 logcat |greo -i ActivityManager
    • iOS:bundleID
    • 浏览器:browserName

capabilities设置

  • app apk 地址
  • appPackage 包名
  • appActivity Activity 名字
  • automationName 默认使用uiautomator
  • noReset fullReset 是否在测试前后重置相关环境
  • UnicodeKeyBoard resetKeyboard 是否需要输入非英文之外的语言并在测试完成后重置输入法
  • 详细可设置哪些内容可查看官方文档:
    • 例如
      • 设置app启动不重置(即不再授权noReset)
      • 指定设备执行:udid
      • 启用中文输入:unicodeKeyboard
      • 自动授权:autoGrantPermissions

测试步骤

  • 定位

    • id

    • xpath:

      # 元素定位-组合定位方式
      driver.find_element_by_xpath("//*[@resource-id=‘com.tfffc.cf:id/id_text‘ and @text=‘我的‘]").click()
      
    • accessibityId:conttent-desc

    • 不推荐使用:class-ios、-android

  • 交互

  • 断言

    • 简单的断言用:import static org.junit.Assert.assertEquals;

      assertEquals("大童邀请函",driver.findElementById("com.DaTong.InsuranceForAndroid:id/titleBar_title").getText());
      
    • 常用断言:hamcrest(查看官方文档即可)

常见操作

详细查看官方文档:

以下是简单介绍常用操作,具体查看官方文档。

  • drvier:

    • find定位元素

    • getPageSource获取元素列表

    • getLocation获取元素位置

    • quit退出

    • activateapp激活app

    • swich_to切换至其他页面

    • 截图:FileUtils.copyFile(driver.getScreenshotAs(OutputType.FILE),new File("1.png"));
      
  • 具体元素操作:

    • el2.click();//点击
      
    • el2.getAttribute();//获取元素属性
      
    • el2.isDisplayed();//元素是否展现
      
    • el2.sendKeys(‘dfaf‘);//输入中文,启动app时,capabilities需要设置unicodekeyboard为true
      
  • 手势操作:

    • 详细查看官方文档:

    • press

    • release

    • moveTo

    • tap wait

    • longPress

    • cancel

    • perform

    • 例子:

      ta.press(PointOption.point(a)).moveTo(PointOption.point(b)).release().perform();
      

原文:https://www.cnblogs.com/novice77/p/14872099.html

文章分类
代码人生
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐