章节十五、3-对象仓库、Page Factory实例应用
一、如何创建对象仓库
package pageclasses; import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory; public class SearchPageFactory { WebDriver driver; //如何创建对象工厂
//创建对象仓库需要用到FindBy这个组件,FindBy可以告诉selenium用什么方式来查找元素
@FindBy(id="tab-flight-tab-hp")
WebElement fly; @FindBy(xpath="//input[@id='flight-origin-hp-flight']")
WebElement startText; @FindBy(xpath="//input[@id='flight-destination-hp-flight']")
WebElement endText; @FindBy(xpath="//input[@id='flight-departing-hp-flight']")
WebElement startData; @FindBy(xpath="//input[@id='flight-returning-hp-flight']")
WebElement returnData; @FindBy(xpath="//div[@class='cols-nested ab25184-submit']//button[@class='btn-primary btn-action gcw-submit']")
WebElement searchButton; public SearchPageFactory(WebDriver driver) {
this.driver = driver;
// 对查找的元素进行初始化,然好我们就可以使用了
// this表示本类型的对象
PageFactory.initElements(driver, this);
} //操作仓库中的元素
public void clickFly() {
fly.click();
} public void writStartText(String text) {
startText.sendKeys(text);
} public void writEndText(String text) {
endText.sendKeys(text);
} public void writStartData(String text) {
startData.sendKeys(text);
} public void writReturnData(String text) {
returnData.sendKeys(text);
} public void clickSearchButton() {
searchButton.click();
}
}
1、如何创建对象仓库:
@FindBy(id="tab-flight-tab-hp")
WebElement fly;
Id:表示查找元素的方式(还有XPath、name等)
tab-flight-tab-hp:表示需要查找的元素
Fly:表示是WebElement类型的变量名
2、对对象仓库查找的元素进行初始化,以便于我们可以使用:PageFactory.initElements(driver, this);
driver:表示浏览器对象
This:表示本类型的对象
二、实例引用对象仓库
package pageclasses; import java.util.concurrent.TimeUnit; import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.runner.notification.RunListener.ThreadSafe;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver; class FarmeworkTestCase { WebDriver driver;
String url;
SearchPageFactory search; @BeforeEach
void setUp() throws Exception {
driver = new ChromeDriver();
search = new SearchPageFactory(driver);
url = "https://www.expedia.com/";
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get(url);
} @Test
void test() throws InterruptedException {
// 点击机票按钮,进入机票预订页面
search.clickFly();
// 舒服出发地
search.writStartText("长沙, 中国 (CSX-黄花国际机场)");
// 输入目的地
Thread.sleep(2000);
search.writEndText("上海, 中国 (PVG-浦东国际机场)");
// 输入出发日期
search.writStartData("08/01/2019");
// 输入返程日期
search.writReturnData("08/03/2019");
// 点搜索按钮
search.clickSearchButton();
} @AfterEach
void tearDown() throws Exception {
Thread.sleep(2000);
driver.quit();
}
}
如果有不明白的小伙伴可以加群“555191854”问我,群里都是软件行业的小伙伴相互一起学习。
内容具有连惯性,未标注的地方可以看前面的博客,这是一整套关于ava+selenium自动化的内容,从java基础开始。
欢迎关注,转载请注明来源。
章节十五、3-对象仓库、Page Factory实例应用的更多相关文章
- 章节十五、5-记录日志---Log4j
一.为什么要用Log4j记录日志? 日志记录对于任何应用程序都非常重要. 它可以帮助我们快速调试代码,通过收集代码执行的信息让代码容易维护. 二.Log4j 是什么? Apache为Java提供的日志 ...
- javaweb学习总结二十五(response对象的用法一)
一:Reponse对象的概念 当客户端发送http请求时,服务器端会对每一次请求,创建request对象和response对象. response对象包括三个部分:响应头.响应状态码以及响应体 二:r ...
- JavaScript学习笔记(十五)——对象之Date,RegExp
在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...
- 章节十五、6-log4 2-用默认的配置
一.实例演示 package log4jtutorial; import org.apache.logging.log4j.LogManager; import org.apache.logging. ...
- 章节十五、7- 配置文件-Console Logging
一.创建xml文件 1.创建xml文件 在项目中我们需要专门建一个文件夹来放xml文件或者是其它文件. 2.然后对文件夹进行命名 3.选择new 其它 4.选择XML File 5.给xml文件命名 ...
- 章节十五、9-自定义Loggers
一.如何给不同的包设置不同的日志级别? 1.针对不同的包来记录不同级别的日志信息 2.在日志xml配置文件中加入配置信息(红色标注) <?xml version="1.0" ...
- 章节十五、8-配置文件File Logging
一.如何将log输出到文件中? 1.配置xml文件 <?xml version="1.0" encoding="UTF-8"?> <Confi ...
- 章节十五、2-PageObjectModel
一.在实现自动化过程中,会有很多重复的代码,我们在维护代码时会很困难,如果想解决这个问题,我们就需要使用PageObjectModel(页面对象模型)的方式来进行自动化代码的书写. 二.案例演示 以该 ...
- 三十五.MySQL读写分离 MySQL多实例 、MySQL性能调优
1.实现MySQL读写分离 搭建一主一从结构 配置maxscale代理服务器 测试分离配置 1.1 搭建一主一从结构 192.168.4.51 主 192.168.4.52 从 测试OK 1. ...
随机推荐
- Elasticsearch的使用
我这边是以elasticsearch-2.4.3为例:引入maven <dependency> <groupId>org.elasticsearch.client</gr ...
- RocketMQ(6)---发送普通消息(三种方式)
发送普通消息(三种方式) RocketMQ 发送普通消息有三种实现方式:可靠同步发送.可靠异步发送.单向(Oneway)发送. 注意 :顺序消息只支持可靠同步发送. GitHub地址: https:/ ...
- Python解释器安装教程以及环境变量配置
Python3.6安装 打开官网:http://www.python.org,下载python3.6.如下图: 下载完成后进行安装.如下图: 验证环境是否配置成功 打开cmd,输入python,按回车 ...
- wireshark数据包分析实战 第三、四章
1,wireshark支持的协议上千种,开源的. 2,wireshark需要winpcap驱动支持.winpcap驱动的作用通过操作系统捕捉原始数据包.应用过滤器.将网卡切换为混杂模式. 3,捕获文件 ...
- fis3前端工程构建配置入门教程
一.前言 fis3是百度推出的一款前端工程构建工具,类似的还有webpack,gulp等工具:无论大家有没有使用过,从事前端行业应该都略知一二了,所以对于此类工具用干嘛的我这里就不做重复了. 其实对于 ...
- kafka入门(二)分区和group
topic 在kafka中消息是按照topic进行分类的:每条发布到Kafka集群的消息都有一个类别,这个类别被称为topic parition 一个topic可以配置几个parition,每一个分区 ...
- java获取config下文件
private static final String keystore="keystore.jks"; InputStream is=Thread.currentThread() ...
- cookie 和 session 设置
cookie: 保存在浏览器上的一组键值对, 是由服务器让浏览器进行设置的 下次浏览器访问的时候会携带cookie. request是客户端请求, response是服务端响应. 读取客户端的cook ...
- 3.秋招复习简单整理之List、Map、Set三个接口存取元素时,各有什么特点?
List.Set都是单列元素的集合,它们有共同的父接口Collection. List存取有序可重复元素 存元素:调用add方法,存的元素先来后到,有顺序,当然也可以插队,指定存在某个位置,调用add ...
- NetCore 获取appsetting.json 文件中的配置
1. using Microsoft.Extensions.Configuration public class HomeController : Controller { public IConfi ...