APP自動化測試腳本3
package com.lemon.day01;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import io.appium.java_client.AppiumDriver;
import io.appium.java_client.android.AndroidDriver;
public class APPTest3 {
AppiumDriver<WebElement> driver;
@BeforeClass
public void beforeClass() throws MalformedURLException, InterruptedException{
//1;添加配置
//手工:找到设备、APP、APP某个页面
DesiredCapabilities desiredcapabilities = new DesiredCapabilities();
desiredcapabilities.setCapability("deviceName","127.0.0.1:52001");//设备名
desiredcapabilities.setCapability("appPackage","com.tencent.mm");//app包,区别我们每台设备的app
//使用命令:adb shell dumpsys activity | find "mFocusedActivity"
desiredcapabilities.setCapability("appActivity","com.tencent.mm.ui.LauncherUI");//指定页面
//2;创建驱动
//remoteAddress:远程url地址
//desiredCapablites :这个驱动期望得到的能力
URL remoteAddress = new URL("http://127.0.0.1:4723/wd/hub");//固定不变的
driver = new AndroidDriver<WebElement>(remoteAddress,desiredcapabilities);
//3;找到页面元素
//自动化:程序自动定位到页面元素
Thread.sleep(10000);
WebElement registerBtn = driver.findElement(By.id("d36"));
Thread.sleep(10000);
registerBtn.click();
Thread.sleep(1000);
}
@AfterClass
public void fun(){
driver.quit();
}
@Test(dataProvider = "testDatas")
//拿到数据提供者的数据,循环这个二维数组,提取元素(一维数组),会把一维数组中的每个元素依次注入到形式参数里
//可以把数据提供者的数据注入到测试方法的形式参数里
public void TestCase(String nickName,String mobilPhone,String pwd ) throws MalformedURLException, InterruptedException {
//4;操作页面元素来模拟用户操作
//测试用例,进入注册页面,如 昵称、手机号、密码都不输入的情况,然后点击注册
List<WebElement> elements = driver.findElements(By.id("ht"));
//每次清空
elements.get(0).clear();
elements.get(1).clear();
elements.get(2).clear();
// WebElement nickNameInput = driver.findElement(By.id("ht"));
//nickNameInput.sendKeys("");//输入字符串
elements.get(0).sendKeys(nickName);
// WebElement mobilPhoneInput = driver.findElement(By.id("ht"));
// mobilPhoneInput.sendKeys("");
elements.get(1).sendKeys(mobilPhone);
// WebElement pwdInput = driver.findElement(By.id("ht"));
//pwdInput.sendKeys("");
elements.get(2).sendKeys(pwd);
WebElement registerBtnn = driver.findElement(By.id("cw1"));
boolean isEnabled = registerBtnn.isEnabled();//是否被激活
Assert.assertFalse(isEnabled);//断言判断是否可以点击
}
@DataProvider
public Object[][] testDatas(){
//int[] array1 = {1,2,3,4};//静态数组
Object[][] datas = {{"","",""},{"shashe","",""},{"shashe","15111917843",""}};
return datas;
}
}
APP自動化測試腳本3的更多相关文章
- APP自動化測試腳本2
package com.lemon.day01; import java.net.MalformedURLException; import java.net.URL; import java.uti ...
- APP自動化測試腳本1
package com.lemon.day01; import java.net.MalformedURLException; import java.net.URL; import java.uti ...
- Selenium自動化測試(Python+VS2013)-基礎篇-環境安裝
Python+VS2013環境安裝 http://www.cnblogs.com/aehyok/p/3986168.html PTVS: http://microsoft.github.io/PTVS ...
- PCB電路板為何要有測試點?
對學電子的人來說,在電路板上設置測試點(test point)是在自然不過的事了,可是對學機械的人來說,測試點是什麼?可能多還有點一頭霧水了.我記得我第一次進電子組裝廠工作當製程工程師的時候,還曾經為 ...
- ASP.NET MVC 單元測試系列
ASP.NET MVC 單元測試系列 (7):Visual Studio Unit Test 透過 Visual Studio 裡的整合開發環境 (IDE) 結合單元測試開發是再便利不過的了,在 Vi ...
- Postman - 測試 API 的好工具
POSTMAN in Google APP Store 因為工作的關係,常常寫一些 API 供 APP 使用.以前傻傻的,每次測試的時候都會自己刻一個 HTML 的表單,一個一個填入 input ,接 ...
- 一起來玩鳥 Starling Framework(2)效能測試以及Image與Texture
上一篇我們放了一個Quad與TextField在舞台上慢慢轉.眼尖的可能會發現轉起來邊緣有點鋸齒,這可以透過設定Starling的反鋸齒來解決,在Main.as裡,新增了_starling之後,可以加 ...
- 測試大型資料表的 Horizontal Partitioning 水平切割
FileGroup 檔案群組 :一個「資料庫(database)」可對應一或多個 FileGroup,一個 FileGroup 可由一或多個 file (.ndf) 構成. FileGroup 可讓 ...
- [转] [Visual Studio 2012] 找回 建立單元測試 選單
原文链接:http://www.dotblogs.com.tw/yc421206/archive/2013/03/08/95920.aspx Step1.建立選單 在VS2012選單,Tools→Cu ...
随机推荐
- idea(java)实用开发插件
Idea常用的插件: mybatisX, ---------------- (Alt + enter) codeGlace, Lombok, sonarlint, translation, ...
- <lable>标签
最近用各种框架的时候,发现很多平常自己写代码没注意到的标签和用法,在这里记录一下. 其实是很多细节方面需要注意的写法. <label> 定义:为input元素定义标注 label标签不会向 ...
- Nginx + fastcgi + php 的原理与关系
CGI:Common Gateway Interface 公共网关接口,web服务器和脚本语言通信的一个标准.接口.协议[协议] FastCGI:CGI协议的升级版[协议] PHP-CGI: 实现了C ...
- 自制微信小程序 提示插件 -- noticeUitis.js
/* noticeMsg.js by: FEer_llx Modify 2016/08/24 */ function weNotice(obj) { this.fadeFlag = true; thi ...
- Java基础之抽象类与接口
Java基础之抽象类与接口 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的时候 ...
- Oracle 优化器_访问数据的方法_单表
Oracle 在选择执行计划的时候,优化器要决定用什么方法去访问存储在数据文件中的数据.我们从数据文件中查询到相关记录,有两种方法可以实现:1.直接访问表记录所在位置.2.访问索引,拿到索引中对应的r ...
- Fiddle用于移动端抓包
一.什么情况下可以用到 1.调查参考其他移动端网站的抓包,他们传输方式.如微信上京东的智能机器人的包.移动端的请求接口格式.如何实现的效果等. 2.调试本地移动端页面的测试页面效果是否有问题.如:页面 ...
- 导航控制器的根控制器 是滚动性&普通的frame区别
当一个控制器有navigationBar&tabBar: 1.当导航控制器根控制器是tableViewController时,tableView 的frame原点是屏幕左上角,当向tableV ...
- HDU-6053 TrickGCD
题目连接: https://vjudge.net/problem/HDU-6053 Description You are given an array A , and Zhu wants to kn ...
- ACM-ICPC 2017 Asia Urumqi:A. Coins(DP) 组合数学
Alice and Bob are playing a simple game. They line up a row of nn identical coins, all with the head ...