appium导入哪些java模块

简单介绍

讲解一个appium测试脚本需要导入哪些java模块。

导入的java模块

明确两点信息:

  • 一个脚本需要讲清楚测试环境:1、自动化平台方面,测试的平台是什么(appium或者selendroid,selendroid用于测试低版本的Android系统的app);2、被测试设备方面,被测试设备的平台(Android或者iOS),被测试设备的名字,被测试设备的系统版本;3、被测试应用方面,待测应用是移动web应用(使用移动端浏览器)还是原生/混合应用,若不是web应用,那么是否需要安装包进行安装,该应用的package和activity是什么。
  • appium是对selenium的扩展,又细分为Android方向的扩展和iOS方向的扩展。例如,WebElement可以操作selenium中的命令;MobileElement是appium中的元素,是WebElement的子类,添加了一些移动端独有的手势操作;AndroidElement和iOSElement都是MobileElement的子类,各自添加了一些系统特有的功能。又比如,RemoteWebDriver是selenium中的,AppiumDriver是其子类,添加了一些移动端的功能;AndroidDriver和iOSDriver是AppiumDriver的子类,分别适用于特定的系统。

看下面例子。

 1 import org.openqa.selenium.remote.CapabilityType;//指明移动端浏览器的名字,移动web测试时需要此模块
 2 import org.openqa.selenium.remote.DesiredCapabilities;//创建一个capability变量容纳测试环境参数,比如测试平台、测试设备、待测应用等。所有测试都需要这个模块。
 3 import org.testng.Assert;//用于断言测试结果是否与期待值相符。testng和junit都是单元测试的模块,选用其一即可。
 4 
 5 import org.testng.annotations.Test;//标注哪些方法是测试用例。
 6 import org.testng.annotations.AfterTest;//标注哪些方法是清理工作,一般用于退出driver。
 7 
 8 import io.appium.java_client.MobileElement;//用于操作待测应用中的元素,类似功能的还有AndroidElement和iOSElement,必须选用其中一个。 9 import io.appium.java_client.TouchAction; 10 import io.appium.java_client.android.AndroidDriver;//与待测设备建立session,用于操作待测应用,类似功能的还有AppiumDriver和iOSDriver,必须选用其中一个。 11 import io.appium.java_client.remote.AndroidMobileCapabilityType;//用于指明APP_PACKAGE、APP_ACTIVITY参数。 12 import io.appium.java_client.remote.AutomationName;//指明测试平台的名字,appium或者selendroid。 13 import io.appium.java_client.remote.MobileCapabilityType;//用于指明PLATFORM_NAME,DEVICE_NAME,PLATFROM_VERSION,APP等参数。 14 15 import java.io.File;//操作应用文件。 16 17 import java.net.URL;//配置appium server监听的地址。

 

完整脚本

 1 package main.java.com.dbyl.appiumCore.tests;
 2 
 3 import org.openqa.selenium.remote.CapabilityType;
 4 import org.openqa.selenium.remote.DesiredCapabilities;
 5 import org.testng.Assert;
 6 
 7 import org.testng.annotations.Test;
 8 import org.testng.annotations.AfterTest; 9 10 import io.appium.java_client.MobileElement; 11 import io.appium.java_client.TouchAction; 12 import io.appium.java_client.android.AndroidDriver; 13 import io.appium.java_client.remote.AndroidMobileCapabilityType; 14 import io.appium.java_client.remote.AutomationName; 15 import io.appium.java_client.remote.MobileCapabilityType; 16 17 import java.io.File; 18 19 import java.net.URL; 20 import java.util.List; 21 import java.util.concurrent.TimeUnit; 22 23 public class unlockerTest { 24 private AndroidDriver<MobileElement> driver; 25 26  @Test 27 public void Demo() throws Exception { 28 // set up appium 29 DesiredCapabilities capabilities = new DesiredCapabilities(); 30  capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, AutomationName.APPIUM); 31 // for native app set null, for web test please set chrome or firefox 32 capabilities.setCapability(CapabilityType.BROWSER_NAME, ""); 33 34 capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android"); 35 capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Android Emulator"); 36 // simulator version 4.4 37 capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4"); 38 // if no need install don't add this 39 // File classpathRoot = new File(System.getProperty("user.dir")); 40 File classpathRoot = new File("/Users/wwh/IdeaProjects"); 41 File appDir = new File(classpathRoot, "apps"); 42 File app = new File(appDir, "Locker.apk"); 43  capabilities.setCapability(MobileCapabilityType.APP, app.getAbsolutePath()); 44 // package name 45 capabilities.setCapability(AndroidMobileCapabilityType.APP_PACKAGE, "com.AppiumGirls.locker"); 46 // // support Chinese 47 capabilities.setCapability("unicodeKeyboard", "True"); 48 capabilities.setCapability("resetKeyboard", "True"); 49 // no need sign 50 capabilities.setCapability("noSign", "True"); 51 // launcher activity 52 capabilities.setCapability(AndroidMobileCapabilityType.APP_ACTIVITY, ".MainActivity"); 53 String url = "http://localhost:4723/wd/hub"; 54 driver = new AndroidDriver<MobileElement>(new URL(url), capabilities); 55 56 driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); 57 58 MobileElement button = driver.findElementByAndroidUIAutomator("new UiSelector().text(\"设置手势密码\")"); 59 // tap 60 button.tap(1, 1000); 61 // get all the items of gesture locker 62 List<MobileElement> items = driver.findElementsByClassName("android.widget.ImageView"); 63 for (MobileElement item : items) { 64 /** 65 * 0 1 2 3 4 5 6 7 8 66 */ 67  item.click(); 68  } 69 70 // create a Z from 0->1->2->4->6->7->8 71 TouchAction touches1 = new TouchAction(driver); 72 touches1.press(items.get(0)).waitAction(1000).moveTo(items.get(1)).waitAction(1000).moveTo(items.get(2)) 73 .waitAction(1000).moveTo(items.get(4)).moveTo(items.get(6)).waitAction(1000).moveTo(items.get(7)) 74 .waitAction(1000).moveTo(items.get(8)).release(); 75  touches1.perform(); 76 Thread.sleep(2000); 77 //create 0->1->2 78 TouchAction touches2 = new TouchAction(driver); 79 touches2.press(items.get(0)).waitAction(1000).moveTo(items.get(1)).waitAction(1000).moveTo(items.get(2)) 80 .waitAction(1000).moveTo(items.get(4)).release(); 81  touches2.perform(); 82 MobileElement alert =driver.findElementById("com.AppiumGirls.locker:id/text_tip"); 83 Assert.assertTrue(alert.getText().contains("与上一次绘制不一致,请重新绘制")); 84 85  } 86 87  @AfterTest 88 public void Teardown(){ 89  driver.quit(); 90  } 91 }

 

转载于:https://www.cnblogs.com/superbaby11/p/6381067.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值