JavaApp自动化测试系列[v1.0.0][几种常见APP类型测试代码实例附源码]

通常APP分为:原生APP、WebApp、混合型APP,其自动化测试代码稍有不同

Java结合TestNG单元测试框架,实现移动端IOS_WebApp测试【源码】

/** @FileName Test_iOS_WebApp:* @author davieyang* @create 2018-11-22 14:20*/
package testscript;
import io.appium.java_client.ios.IOSDriver;
import io.appium.java_client.remote.MobileCapabilityType;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;public class Test_iOS_WebApp {IOSDriver driver;@BeforeClasspublic void setUp() throws MalformedURLException{DesiredCapabilities caps = new DesiredCapabilities();caps.setCapability(MobileCapabilityType.BROWSER_NAME, "Safari");caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "8.1");caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "iOS");caps.setCapability(MobileCapabilityType.DEVICE_NAME,"iPad");caps.setCapability("udid","Real Device Identifier");driver = new IOSDriver (new URL("http://127.0.0.1:4723/wd/hub"), caps);driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);}@Testpublic void testExample(){driver.get("https://www.google.com");WebElement searchBox=driver.findElement(By.name("q"));searchBox.sendKeys("Appium for mobile automation");}@AfterClasspublic void tearDown(){driver.quit();}
}

Java结合TestNG单元测试框架,实现移动端ios_hybridapp测试【源码】

/** @FileName Test_iOS_HybridApp:* @author davieyang* @create 2018-11-22 14:18*/
package testscript;
import io.appium.java_client.ios.IOSDriver;
import io.appium.java_client.remote.MobileCapabilityType;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;public class Test_iOS_HybridApp {IOSDriver driver;@BeforeClasspublic void setUp() throws MalformedURLException{DesiredCapabilities caps = new DesiredCapabilities();File app=new File("/Users/mhans/appium/ios/WebViewApp.app");caps.setCapability(MobileCapabilityType.APP,app);caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "8.1");caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "iOS");caps.setCapability(MobileCapabilityType.DEVICE_NAME,"iPad");caps.setCapability("udid","Real Device Identifier");driver = new IOSDriver (new URL("http://127.0.0.1:4723/wd/hub"), caps);driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);}@Testpublic void testExample(){WebElement editBox=driver.findElement(By.className("UIATextField"));editBox.sendKeys("https://www.google.com");WebElement goButton=driver.findElement(By.name("Go"));goButton.click();Set<String> contexts = driver.getContextHandles();for (String context : contexts) {System.out.println(context); //it will print NATIVE_APP \n WEBVIEW_com.example.testapp}driver.context((String) contexts.toArray()[1]);WebElement images=driver.findElement(By.linkText("Images"));images.click();}@AfterClasspublic void tearDown(){driver.closeApp();}
}

Java结合TestNG单元测试框架,实现移动端ios_nativeapp测试【源码】

/** @FileName Test_iOS_NativeApp:* @author davieyang* @create 2018-11-22 14:19*/
package testscript;
import io.appium.java_client.ios.IOSDriver;
import io.appium.java_client.remote.MobileCapabilityType;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;public class Test_iOS_NativeApp {IOSDriver driver;@BeforeClasspublic void setUp() throws MalformedURLException{File app=new File("/Users/mhans/appium/ios/BmiCalc.app");//You can change it with your app addressDesiredCapabilities caps = new DesiredCapabilities();caps.setCapability(MobileCapabilityType.APP,app);caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "8.1");caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "iOS");caps.setCapability(MobileCapabilityType.DEVICE_NAME,"iPad");caps.setCapability("udid","Real Device Id ");driver = new IOSDriver (new URL("http://127.0.0.1:4723/wd/hub"), caps);driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);}@Testpublic void testExample(){WebElement height=driver.findElement(By.xpath("(//UIATextField)[2]"));height.sendKeys("1.82");WebElement weight=driver.findElement(By.xpath("(//UIATextField)[4]"));weight.sendKeys("75");WebElement calculateBMI=driver.findElement(By.name("Calculate BMI"));calculateBMI.click();}@AfterClasspublic void tearDown(){driver.closeApp();}
}

Java结合TestNG单元测试框架,实现移动端andriod_webapp测试【源码】

/** @FileName Test_Android_WebApp:* @author davieyang* @create 2018-11-22 14:17*/
package testscript;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.remote.MobileCapabilityType;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;public class Test_Android_WebApp {AndroidDriver driver;@BeforeClasspublic void setUp() throws MalformedURLException{DesiredCapabilities caps = new DesiredCapabilities();caps.setCapability(MobileCapabilityType.BROWSER_NAME, "Chrome");caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4");caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");caps.setCapability(MobileCapabilityType.DEVICE_NAME,"Moto X");driver = new AndroidDriver (new URL("http://127.0.0.1:4723/wd/hub"), caps);driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);}@Testpublic void testExample(){driver.get("https://www.gmail.com");WebElement username=driver.findElement(By.name("Email"));username.sendKeys("test");WebElement password=driver.findElement(By.name("Passwd"));password.sendKeys("test");WebElement signIn=driver.findElement(By.name("signIn"));signIn.click(); }@AfterClasspublic void tearDown(){driver.quit();}
}

Java结合TestNG单元测试框架,实现移动端Android_HybridApp测试【源码】

/** @FileName Test_Android_HybridApp:* @author davieyang* @create 2018-11-22 14:15*/
package testscript;import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.remote.AndroidMobileCapabilityType;
import io.appium.java_client.remote.MobileCapabilityType;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;public class Test_Android_HybridApp {AndroidDriver driver;@BeforeClasspublic void setUp() throws MalformedURLException{DesiredCapabilities caps = new DesiredCapabilities();caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4");caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");caps.setCapability(MobileCapabilityType.DEVICE_NAME,"Moto X");caps.setCapability(MobileCapabilityType.AUTOMATION_NAME,"Appium");//Use Selendroid in case of <4.4 android versioncaps.setCapability(AndroidMobileCapabilityType.APP_PACKAGE, "com.example.hybridtestapp");caps.setCapability(AndroidMobileCapabilityType.APP_ACTIVITY, "com.example.hybridtestapp.MainActivity");driver = new AndroidDriver (new URL("http://127.0.0.1:4723/wd/hub"), caps);driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);}@Testpublic void testExample(){Set<String> contexts = driver.getContextHandles();for (String context : contexts) {System.out.println(context); //it will print NATIVE_APP \n WEBVIEW_com.example.hybridtestapp}driver.context((String) contexts.toArray()[1]);WebElement firstName=driver.findElement(By.name("fname"));firstName.sendKeys("test");WebElement lastName=driver.findElement(By.name("lname"));lastName.sendKeys("test");WebElement age=driver.findElement(By.name("age"));age.sendKeys("26");WebElement username=driver.findElement(By.name("username"));username.sendKeys("appiumTester");WebElement password=driver.findElement(By.id("psw"));password.sendKeys("appium@123");WebElement registerButton=driver.findElement(By.id("register"));registerButton.click();}@AfterClasspublic void tearDown(){driver.closeApp();}
}

Java结合TestNG单元测试框架,实现移动端Android_NativeApp测试【源码】

/** @FileName Test_Android_NativeApp:* @author davieyang* @create 2018-11-22 14:17*/
package testscript;import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.remote.MobileCapabilityType;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;public class Test_Android_NativeApp {AndroidDriver driver;@BeforeClasspublic void setUp() throws MalformedURLException{DesiredCapabilities caps = new DesiredCapabilities();caps.setCapability(MobileCapabilityType.PLATFORM_VERSION, "4.4");caps.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");caps.setCapability(MobileCapabilityType.DEVICE_NAME,"Moto X");//I am using Moto X as Real Device  caps.setCapability(MobileCapabilityType.APP_PACKAGE,"com.android.dialer"); caps.setCapability(MobileCapabilityType.APP_ACTIVITY,"com.android.dialer.DailtactsActivity");driver = new AndroidDriver (new URL("http://127.0.0.1:4723/wd/hub"), caps);driver.manage().timeouts().implicitlyWait(30,TimeUnit.SECONDS);}@Testpublic void testExample(){WebElement dialPad=driver.findElementByAccessibilityId("dial pad");dialPad.click();for(int n=0;n<10;n++){driver.findElement(By.name(""+n+"")).click();}WebElement dial=driver.findElementByAccessibilityId("dial");dial.click();}@AfterClasspublic void tearDown(){driver.closeApp();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/525678.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

混合云异军突起 英特尔的全“芯”体验为企业保驾护航

近几年&#xff0c;混合云在IT界异军突起&#xff0c;各大厂商纷纷布局混合云市场&#xff0c;企业更愿意将数据存放在私有云中&#xff0c;但是同时又希望可以获得公有云的计算资源&#xff0c;在这种情况下混合云被越来越多的采用&#xff0c;它将公有云和私有云进行混合和匹…

python 常用模块函数_python函数和常用模块(三),Day5

递归反射os模块sys模块hashlib加密模块正则表达式反射python中的反射功能是由以下四个内置函数提供&#xff1a;hasattr、getattr、setattr、delattr&#xff0c;改四个函数分别用于对对象内部执行&#xff1a;检查是否含有某成员、获取成员、设置成员、删除成员。class Foo(ob…

搭建java_搭建JAVA环境

1 jdk的获取jdk的获取路径有很多这种&#xff0c;我把我网盘上存的分享个大家&#xff0c;大家直接下载就可以了。http://pan.baidu.com/s/1pLsJLtp(这是一个公开链接&#xff0c;直接打开下载就可以了)。2 jdk的安装(1)单击刚刚下载的安装文件将会弹出欢迎对话框。(2)点击“下…

java数组下标越界_BUG-并行流与数组下标越界-思考与总结

BUG-并行流与数组下标越界-思考与总结今天线上环境报异常&#xff0c;发现了一个之前没注意过的问题&#xff0c;记录一下。1. 异常信息异常信息如下&#xff1a;Caused by: java.lang.ArrayIndexOutOfBoundsExceptionat java.lang.String.getChars(String.java:826)at java.la…

IDC敲黑板啦:未来企业IT以混合云为主

数字化是企业转型的必由之路数字化技术正在融入企业的血液里。IDC 认为&#xff0c;基于第三平台的 46 技术是企业在数字化转型过程中的关键要素&#xff1a;• 4 是指以云计算、大数据、社交商业与移动技术为代表的第三平台技术。• 6 则是基于第三平台智商的 6 大创新加速器。…

axis2接收json_AXIS2 如何返回JSON数据

按照网上两篇博文操作了http://blog.djakapm.com/2011/12/15/json-web-service-with-java-and-axis2/http://www.marcusschiesser.de/2009/01/building-a-json-web-service-with-java-and-axis2/但是结果一直是返回的XML数据&#xff0c;无法返回json数据。不知道有哪位大侠成功…

Service Mesh 在华为公有云的实践

我们在构建微服务而构建微服务是困难的微服务是一个很大的概念&#xff0c;从团队组织到最佳实践似乎都有实施微服务的一些指导。我们这里只提构建微服务的架构模式&#xff0c;也就是关乎到你用什么样的方式来构建你以微服务架构来组织的应用系统。近些年随着微服务的火热&…

centos7 安装mysql php_Centos7 安装mysql与php

https://blog.csdn.net/qq_36431213/article/details/79576025官网下载安装mysql-server依次使用下面三个命令安装wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpmrpm -ivh mysql-community-release-el7-5.noarch.rpmyum install mysql-community-ser…

分布式NewSQL数据库实践——民生银行经典案例

前言此前&#xff0c;金融信息化建设主要依托原有集中型 IT 架构进行维护扩展&#xff0c;系统规模及复杂程度呈指数级增长&#xff0c;各类瓶颈逐渐暴露&#xff0c;日益增长的数字金融需求同旧式的系统架构缺陷之间的矛盾愈加凸显。中国人民银行、中国银行保险监督管理委员会…

「拨云见日」英特尔揭秘短视频背后的二三事

“像一棵海草海草&#xff0c;随风飘摇&#xff0c;海草海草&#xff0c;浪花里舞蹈……”看到这样魔性的歌词&#xff0c;你是不是有立刻跟着唱的冲动&#xff0c;甚至还很想起来跳一段呢&#xff1f;去火锅店点餐&#xff0c;你会掏出手机告诉服务员按照视频内容操作吗&#…

36套java精品高级课_Dubbo-ZooKeeper“走一波”

随着科技的发展&#xff0c;服务器受到来自客户端的“压力”与日俱增&#xff0c;而使用分布式技术无疑是解决这一问题的不二选择&#xff0c;今天我们就介绍一款分布式解决--基于Dubbo-ZooKeeper的分布式解决方案。本文主要是如何安装Dubbo-ZooKeeper。Dubbo是什么&#xff1f…

英特尔助力金山云带你畅游云端的游戏世界

科技的发展让人们可以在任意时间、任意地点与不同的玩家一同畅游游戏世界。不论是拥挤的通勤路上&#xff0c;还是热闹的餐厅&#xff0c;都少不了痴迷于手游的玩家。来自《2017年中国游戏产业报告&#xff08;摘要版&#xff09;》的数据表明&#xff0c;去年中国游戏市场全年…

java date 实例_Java Date 和 Calendar 实例

Java 之 Date 和 Calendar 实例package com.homer.learn;import java.text.DateFormat;import java.text.ParsePosition;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;public class TimeTest {publ…

数据洪流时代,企业转型需要修建自己的“都江堰”

科技的进步推动着人类文明的进化&#xff0c;从农业采集社会到如今的网络智能社会&#xff0c;文明的进化也同样带动了企业的“进化”。今天&#xff0c;人工智能、云计算、大数据等技术的不断突破&#xff0c;让网络产生的数据量呈爆发式增长&#xff0c;数据洪流汹涌奔来&…

java $1参数_jmap命令详解----查看JVM内存使用详情

linux获取java进程PID&#xff1a;https://www.cnblogs.com/sxdcgaq8080/p/10734752.html如果命令使用过程中报错,可能解决你问题的方案&#xff1a;https://www.cnblogs.com/sxdcgaq8080/p/11089179.htmlhttps://www.cnblogs.com/sxdcgaq8080/p/10675966.html1、jmap命令基本概…

时代变了

阅读文本大概需要 2.6 分钟。最近一段时间&#xff0c;经常有人问我这么一个问题&#xff0c;说&#xff0c;张哥&#xff0c;现在市面上有各种付费网课和付费专栏&#xff0c;但我总觉得只有看书学习才是正途&#xff0c;不知道张哥怎么看&#xff1f;到底哪种学习方式最好呢&…

java properties读取缓存_java 读取 properties文件的各种方法

1。使用java.util.Properties类的load()方法示例&#xff1a; InputStream in lnew BufferedInputStream(new FileInputStream(name));Properties p new Properties();p.load(in);2。使用java.util.ResourceBundle类的getBundle()方法示例&#xff1a; ResourceBundle rb Re…

终于有人把什么是云计算、大数据和人工智能讲明白了!云计算是什么?

今天跟大家讲讲云计算、大数据和人工智能。为什么讲这三个东西呢&#xff1f;因为这三个东西现在非常火&#xff0c;并且它们之间好像互相有关系&#xff0c;可是很多人却不知道什么是云计算或者云计算应用在哪&#xff1a;一般谈云计算的时候会提到大数据、谈人工智能的时候会…

java 堆栈信息_每天学习一个命令:jstack 打印 Java 进程堆栈信息

Jstack 用于打印出给定的 java 进程 ID 或 core file 或远程调试服务的 Java 堆栈信息。这里需要注意的是 Java 8 引入了 Java Mission Control&#xff0c;Java Flight Recorder&#xff0c;和 jcmd 等工具来帮助诊断 JVM 和 Java 应用相关的问题。推荐使用最新的工具以及 jcm…

数据洪流来袭,企业转型势不可挡,如何四两拨千斤?

在漫长的历史里&#xff0c;文明的进步都是伴随着科技的发展&#xff0c;企业也在不断进化&#xff0c;无论是商业战略还是商业模式&#xff0c;在科技的推动下与时俱进&#xff0c;不断更迭创新。历史的长河流入数据洪流的时代&#xff0c;人工智能、大数据、云计算等新技术掀…