项目目录介绍:

CalcuatorPage.java文件代码:

package example;

import io.appium.java_client.android.AndroidDriver;
import org.openqa.selenium.By; public class CalcuatorPage { public AndroidDriver driver; // 构造方法
public CalcuatorPage(AndroidDriver driver) {
this.driver = driver;
} // 加号
public void add(){
this.driver.findElement(By.id("com.android.calculator2:id/op_add")).click();
} // 减号
public void sub(){
this.driver.findElement(By.id("com.android.calculator2:id/op_sub")).click();
} // 乘号
public void mul(){
this.driver.findElement(By.id("com.android.calculator2:id/op_mul")).click();
} // 除号
public void div(){
this.driver.findElement(By.id("com.android.calculator2:id/op_div")).click();
} // 删除
public void del(){
this.driver.findElement(By.id("com.android.calculator2:id/del")).click();
} // 清除结果
public void clr(){
this.driver.findElement(By.id("com.android.calculator2:id/clr")).click();
} // 等号
public void eq(){
this.driver.findElement(By.id("com.android.calculator2:id/eq")).click();
} // 结果
public String result(){
String result = this.driver.findElement(By.id("com.android.calculator2:id/result")).getText();
return result;
}
public void number_1(){
this.driver.findElement(By.id("com.android.calculator2:id/digit_1")).click();
} public void number_2(){
this.driver.findElement(By.id("com.android.calculator2:id/digit_2")).click();
}
public void number_3(){
this.driver.findElement(By.id("com.android.calculator2:id/digit_3")).click();
}
public void number_4(){
this.driver.findElement(By.id("com.android.calculator2:id/digit_4")).click();
}
public void number_5(){
this.driver.findElement(By.id("com.android.calculator2:id/digit_5")).click();
}
public void number_6(){
this.driver.findElement(By.id("com.android.calculator2:id/digit_6")).click();
}
public void number_7(){
this.driver.findElement(By.id("com.android.calculator2:id/digit_7")).click();
}
public void number_8(){
this.driver.findElement(By.id("com.android.calculator2:id/digit_8")).click();
}
public void number_9(){
this.driver.findElement(By.id("com.android.calculator2:id/digit_9")).click();
}
public void number_0(){
this.driver.findElement(By.id("com.android.calculator2:id/digit_0")).click();
} }


CalculatorTest.java 文件代码
package example;
import io.appium.java_client.android.AndroidDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test; import static org.testng.Assert.assertEquals;
import java.net.MalformedURLException;
import java.net.URL; public class CalculatorTest { private AndroidDriver driver;
private CalcuatorPage calPage; @BeforeClass
public void startApp() throws MalformedURLException {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName", "J1");
capabilities.setCapability("automationName", "Appium");
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("platformVersion", "6.0");
capabilities.setCapability("appPackage", "com.android.calculator2");
capabilities.setCapability("appActivity", ".Calculator"); this.driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),
capabilities);
this.calPage = new CalcuatorPage(this.driver);
} // 关闭APP
@AfterClass
public void closeApp(){
driver.quit();
} // 清空结果
@AfterMethod
public void clearResult(){
this.calPage.clr();
} @Test
public void testAdd(){
this.calPage.number_1();
this.calPage.add();
this.calPage.number_1();
this.calPage.eq();
String result = this.calPage.result();
assertEquals(result, "2");
} @Test
public void testSub(){
this.calPage.number_5();
this.calPage.sub();
this.calPage.number_3();
this.calPage.eq();
String result = this.calPage.result();
assertEquals(result, "2");
} }

 pom.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com.test1.cn</groupId>
<artifactId>testC</artifactId>
<version>1.0-SNAPSHOT</version> <dependencies>
<!-- https://mvnrepository.com/artifact/org.testng/testng -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.14.3</version>
<scope>test</scope>
</dependency> <dependency>
<groupId>io.appium</groupId>
<artifactId>java-client</artifactId>
<version>3.2.0</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.21.0</version>
<configuration>
<suiteXmlFiles>
<suiteXmlFile>testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
</plugins>
</build>
</project>

19、Page Object 实例的更多相关文章

  1. Python (Page Object实例)

    Page Object是Selenium自动化测试项目开发实践的最佳设计模式之一,通过对界面元素和功能模块的封装减少冗余代码,同时在后期维护中,若元素定位或功能模块发生变化,只需要调整页面元素或功能模 ...

  2. Selenium(十九):unittest单元测试框架(五) Page Object设计模式

    1. Page Object设计模式 Page Object是Selenium自动化测试项目开发实践的最佳设计模式之一,它主要体现在对界面交互细节的封装,这样可以使测试方案更关注于业务而非界面细节.从 ...

  3. Selenium 2自动化测试实战39(Page Object设计模式)

    Page Object设计模式 Page object是selenium自动化测试项目开发时间的最佳设计模式之一,主要体现在对界面交互细节的封装. 1.认识page object优点如下:1.减少代码 ...

  4. selenium+Python(Page Object 设计模式实例)

    以下实例演示了采用了page Object设计模式的方式登录qq空间: 1.创建基础类page:在初始方法__init__()定义驱动的(driver),基本url(base_url)和超时时间(ti ...

  5. Selenium的PO模式(Page Object Model)|(Selenium Webdriver For Python)

            研究Selenium + python 自动化测试有近两个月了,不能说非常熟练,起码对selenium自动化的执行有了深入的认识. 从最初无结构的代码,到类的使用,方法封装,从原始函数 ...

  6. Page Object 模式编写UiAutomator脚本

    在我们学习Page Object Model之前,我们先了解一下Page Object Model(以下简称POM). 为什么要POM 用UiAutomator启动UI自动化测试不是一件困难的任务.你 ...

  7. Python+Selenium使用Page Object实现页面自动化测试

    Page Object模式是Selenium中的一种测试设计模式,主要是将每一个页面设计为一个Class,其中包含页面中需要测试的元素(按钮,输入框,标题 等),这样在Selenium测试页面中可以通 ...

  8. 页面对象(Page Object)模式

    内容转载自 https://www.cnblogs.com/yytesting/p/6973474.html 页面对象(Page Object)模式是目前自动化测试领域普遍使用的设计模式之一,此模式可 ...

  9. Python+Selenium笔记(十三):Page Object设计模式

    (一) 前言 简单的说就是分为2层,页面class 和测试class. 页面class:分为父类和子类(子类指具体的页面,每一个页面都创建一个类),父类中定义公有的属性和方法(操作). #对面向对象有 ...

随机推荐

  1. Java 线程基础

    Java 线程基础

  2. spring MVC 返回值信息和ResponseBody的响应json数据

    spring mvc的界面返回: 如果我们定义的返回类型是String 那么我们返回的时候直接写入 我们的界面的名字就可以了  springmvc会自动去找到我们的界面,如果是void类型的返回那么 ...

  3. 33. 构建第一个job

    1.点击 New Item 2.Enter an item name 输入一个name,点击Freestyle project 3.我们可以输入一个描述,点击Advanced 4.勾选Use cust ...

  4. python中输入多个数字(代码实现)

    不多说,直接上代码: list1 = [] #定义一个空列表 str1 = input("请输入数值,用空格隔开:") # list2 = str1.split(" &q ...

  5. Python升级3.多

    本文主要介绍在Linux(CentOS)下将Python的版本升级为3.6.2的方法 众所周知,在2020年python官方将不再支持2.7版本的python,所以使用3.x版本的python是必要的 ...

  6. USACO Milk Routing /// 优先队列广搜

    题目大意: 在n个点 m条边的无向图中 需要运送X单位牛奶 每条边有隐患L和容量C 则这条边上花费时间为 L+X/C 求从点1到点n的最小花费 优先队列维护 L+X/C 最小 广搜到点n #inclu ...

  7. 关于Oracle中Sort Merge Join的改写

    业务场景的问题,我们有一个刷CUBE的SQL,是Oracle环境,平时跑70多分钟, 但是最近突然不动了,这个SQL需要算累计值,比如年累计客户数量. 累计值是什么意思呢?我们使用下面的数据来说明问题 ...

  8. Hooks初探

    一.创建自己的HOOkS,并进行封装 二.创建自己的HOOkS,并进行封装

  9. OpenCV学习笔记 笔记汇总

    转载来源:https://www.cnblogs.com/tonyc/p/6407318.html 今后开始学习OpenCV   1:OpenCV学习笔记 作者:CSDN数量:55篇博文网址:http ...

  10. 2018-10-19-C#-GUID-ToString-

    title author date CreateTime categories C# GUID ToString lindexi 2018-10-19 9:4:44 +0800 2018-4-1 10 ...