19、Page Object 实例
项目目录介绍:
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 实例的更多相关文章
- Python (Page Object实例)
Page Object是Selenium自动化测试项目开发实践的最佳设计模式之一,通过对界面元素和功能模块的封装减少冗余代码,同时在后期维护中,若元素定位或功能模块发生变化,只需要调整页面元素或功能模 ...
- Selenium(十九):unittest单元测试框架(五) Page Object设计模式
1. Page Object设计模式 Page Object是Selenium自动化测试项目开发实践的最佳设计模式之一,它主要体现在对界面交互细节的封装,这样可以使测试方案更关注于业务而非界面细节.从 ...
- Selenium 2自动化测试实战39(Page Object设计模式)
Page Object设计模式 Page object是selenium自动化测试项目开发时间的最佳设计模式之一,主要体现在对界面交互细节的封装. 1.认识page object优点如下:1.减少代码 ...
- selenium+Python(Page Object 设计模式实例)
以下实例演示了采用了page Object设计模式的方式登录qq空间: 1.创建基础类page:在初始方法__init__()定义驱动的(driver),基本url(base_url)和超时时间(ti ...
- Selenium的PO模式(Page Object Model)|(Selenium Webdriver For Python)
研究Selenium + python 自动化测试有近两个月了,不能说非常熟练,起码对selenium自动化的执行有了深入的认识. 从最初无结构的代码,到类的使用,方法封装,从原始函数 ...
- Page Object 模式编写UiAutomator脚本
在我们学习Page Object Model之前,我们先了解一下Page Object Model(以下简称POM). 为什么要POM 用UiAutomator启动UI自动化测试不是一件困难的任务.你 ...
- Python+Selenium使用Page Object实现页面自动化测试
Page Object模式是Selenium中的一种测试设计模式,主要是将每一个页面设计为一个Class,其中包含页面中需要测试的元素(按钮,输入框,标题 等),这样在Selenium测试页面中可以通 ...
- 页面对象(Page Object)模式
内容转载自 https://www.cnblogs.com/yytesting/p/6973474.html 页面对象(Page Object)模式是目前自动化测试领域普遍使用的设计模式之一,此模式可 ...
- Python+Selenium笔记(十三):Page Object设计模式
(一) 前言 简单的说就是分为2层,页面class 和测试class. 页面class:分为父类和子类(子类指具体的页面,每一个页面都创建一个类),父类中定义公有的属性和方法(操作). #对面向对象有 ...
随机推荐
- js匿名函数测试
js匿名函数测试 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> < ...
- yum常见问题
--> Finished Dependency Resolution Error: Multilib version problems found. This often means that ...
- java selenium爬取验证图片是否加载完成
爬虫任务里发现有部分图片没有加载完成就进行文件流上传,导致有一些图片是空白,需要判断一下: 首选获取image标签元素: WebElement image = driver.findElement(B ...
- Go 语言变量、常量
变量 第一种,指定变量类型,声明后若不赋值,使用默认值. var v_name v_type v_name = value 第二种,根据值自行判定变量类型. var v_name = value 第三 ...
- bat批处理----copy和xcopy区别
copy和xcopy区别:两者都可以赋值文件 1.copy不能在有子目录存在的文件中拷贝文件的同时重命名此文件名 2.copy命令能合并两个文件,而xcopy不能
- SpringMVC 与axis2 的整合(服务器端)
1,新建一个web project项目,项目的目录 如下: 2,导入需要的jar包,本例用的是axis2 1.7.3版本. 3,创建接口. package com.dsdl.hcm.webServic ...
- 2018-8-10-WPF-播放-gif
title author date CreateTime categories WPF 播放 gif lindexi 2018-08-10 19:16:53 +0800 2018-2-13 17:23 ...
- Shell内置命令expr
- 换了SSD发现plank也好了
我的Dock用的是plank,很简单很好用.为什么不用Docky还有其他什么玩意儿呢?plank很简单很好用,资源占用很少,可以智能隐藏,you nearly can't feel it but yo ...
- shell 编程四剑客简介 find sed grep awk(微信公众号摘抄)
一,Shell编程四剑客之Find 通过如上基础语法的学习,读者对Shell编程有了更近一步的理解,Shell编程不再是简单命令的堆积,而是演变成了各种特殊的语句.各种语法.编程工具.各种命令的集合. ...