Demo01Test
package Day06;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.edge.EdgeDriver;
import org.testng.annotations.*;
import java.time.Duration;
import java.util.List;
public class Demo01Test {
WebDriver driver;
@BeforeMethod
public void prepare(){
driver = new EdgeDriver();
driver.get("http://www.baidu.com");// 打开百度首页
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(5)); // 设置隐式等待
}
@Test(groups = "smoke")
public void test001() throws InterruptedException {
System.out.println("输入搜索的内容,点击搜索,搜索结果正确");
driver.findElement(By.id("chat-textarea")).sendKeys("java");
WebElement e = driver.findElement(By.id("chat-textarea"));
System.out.println(e.getAttribute("class"));
System.out.println(e.getAttribute("placeholder"));
Thread.sleep(3000);
}
@Test
public void test002() throws InterruptedException {
driver.get("http://www.baidu.com");
WebElement e = driver.findElement(By.id("s-top-left")); // 左上角的工具栏
List<WebElement> es = e.findElements(By.tagName("a"));
int i = 0;
for (WebElement a : es){
System.out.println(a.getText());
System.out.println(a.getAttribute("href"));
if (i<3){
a.click();
}
i++;
}
Thread.sleep(3000);
}
@AfterMethod
public void clear(){
driver.quit();
// driver.close(); // 整个浏览器关闭
}
}
Demo02Test
package Day06;
import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import org.testng.annotations.Test;
import java.util.ArrayList;
import java.util.List;
/*
* json
* jackson
* fastjson 阿里开源的json解析库
*
* json格式的字符串----解析成java中的对象。方便在代码中处理。反序列化
* java中的对象----解析成json格式的字符串,方便传输。序列化
* */
public class Demo02Test {
@Test
public void test001(){
User user1 = new User("Tony",21,"17734694395");
System.out.println(user1); //User{name='Tony', age=21, phone='17734694395'}
// {"age":21,"name":"Tony","phone":"17734694395"}
String a = JSON.toJSONString(user1);
System.out.println(a);
User user2 = new User("Tony");
System.out.println(user2);
String b = JSON.toJSONString(user2); // {"age":0,"name":"Tony"}
System.out.println(b);
User user3 = new User("jack",10,"13919232051");
List<User> users = new ArrayList<>();
users.add(user1);
users.add(user2);
users.add(user3);
JSONArray jsonArray = new JSONArray(users);
String c = JSON.toJSONString(jsonArray);
// [{"age":21,"name":"Tony","phone":"17734694395"},{"age":0,"name":"Tony"},{"age":10,"name":"jack","phone":"13919232051"}]
System.out.println(c); // [{},{},{}]
}
@Test
public void test002(){
String a = "{\"age\":21,\"name\":\"Tony\",\"phone\":\"17734694395\"}";
User u = JSON.parseObject(a,User.class);
System.out.println(u.getPhone());
System.out.println(u.getAge());
System.out.println(u.getName());
String b = "[{\"age\":21,\"name\":\"Tony\",\"phone\":\"17734694395\"},{\"age\":0,\"name\":\"Tony\"},{\"age\":10,\"name\":\"jack\",\"phone\":\"13919232051\"}]";
List<User> users = JSON.parseArray(b,User.class);
for (User uu : users){
System.out.println(uu.getName());
}
}
}
class User{
String name;
int age;
String phone;
//构造方法。tostring、get、set方法
public User(String name){
this.name = name;
}
public User(String name, int age, String phone) {
this.name = name;
this.age = age;
this.phone = phone;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
", phone='" + phone + '\'' +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
Demo03Test
package Day06;
import com.alibaba.fastjson2.JSON;
import okhttp3.*;
import org.testng.Assert;
import org.testng.annotations.Test;
import java.io.IOException;
public class Demo03Test {
// 金融项目,注册-get、登录-post 表单
// 线性代码
public static final String ENV = "http://127.0.0.1:8088/"; // 测试环境 常量 全大写字母 下划线
public static final String REGISTER = ENV + "futureloan/mvc/api/member/register";
public static final String LOGIN = ENV + "futureloan/mvc/api/member/login";
@Test
public void test001() throws IOException {
System.out.println("注册接口,正确的手机号,错误密码(5位),注册失败");
HttpUrl url = HttpUrl.parse(REGISTER).newBuilder().
addQueryParameter("mobilephone","18294752353")
.addQueryParameter("pwd","12345")
.addQueryParameter("regname","hello world").build(); // 创建url
Request request = new Request.Builder().url(url).get().build(); // 创建请求
OkHttpClient client = new OkHttpClient();
Response r = client.newCall(request).execute(); //发送请求
String body = r.body().string();
// {"status":0,"code":"20108","data":null,"msg":"密码长度必须为6~18"}
System.out.println(body);
Assert.assertTrue(body.contains("密码长度必须为6~18"));
JinRongResponse expect = new JinRongResponse(0,"20108",null,"密码长度必须为6~18");
JinRongResponse real = JSON.parseObject(body,JinRongResponse.class); // 实际结果
Assert.assertEquals(real.getCode(),expect.getCode());
Assert.assertEquals(real.getMsg(),expect.getMsg());
Assert.assertEquals(real.getStatus(),expect.getStatus());
}
@Test(groups = "smoke")
public void test002() throws IOException {
System.out.println("登录接口(post),输入正确的手机号,正确的密码,登录成功");
RequestBody form = new FormBody.Builder()
.add("mobilephone","17734694395")
.add("pwd","123456").build(); // 创建一个body
Request request = new Request.Builder().url(LOGIN).post(form).build(); // 创建请求
OkHttpClient client = new OkHttpClient();
Response r = client.newCall(request).execute(); //发送请求
String body = r.body().string();
System.out.println(body);
Assert.assertTrue(body.contains("登录成功"));
JinRongResponse expect = new JinRongResponse(1,"10001",null,"登录成功");
JinRongResponse real = JSON.parseObject(body,JinRongResponse.class); // 实际结果
Assert.assertEquals(real.getCode(),expect.getCode());
Assert.assertEquals(real.getMsg(),expect.getMsg());
Assert.assertEquals(real.getStatus(),expect.getStatus());
}
}
class JinRongResponse{
int status;
String code;
String data;
String msg;
// 构造方法、toString、get、set方法
public JinRongResponse(int status, String code, String data, String msg) {
this.status = status;
this.code = code;
this.data = data;
this.msg = msg;
}
@Override
public String toString() {
return "JinRongResponse{" +
"status=" + status +
", code='" + code + '\'' +
", data='" + data + '\'' +
", msg='" + msg + '\'' +
'}';
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
全量测试.xml
<suite name="金融项目全量自动化" parallel="method" thread-count="5">
<test name="界面自动化">
<classes>
<class name = "Day06.Demo01Test"/>
<class name = "Day06.Demo02Test"/>
</classes>
</test>
<test name="接口自动化">
<classes>
<class name = "Day06.Demo03Test"/>
</classes>
</test>
<test name="其他测试">
<classes>
<class name = "Day05.Demo03Test"/>
<class name = "Day05.Demo04Test"/>
</classes>
</test>
</suite>
冒烟测试.xml
<suite name="冒烟测试" parallel="method" thread-count="5">
<test name="冒烟">
<classes>
<class name = "Day06.Demo01Test"/>
<class name = "Day06.Demo02Test"/>
<class name = "Day06.Demo02Test"/>
<class name = "Day05.Demo03Test"/>
<class name = "Day05.Demo04Test"/>
</classes>
<groups>
<run>
<include name="smoke"/>
</run>
</groups>
</test>
</suite>