一、如何创建对象仓库

 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实例应用的更多相关文章

  1. 章节十五、5-记录日志---Log4j

    一.为什么要用Log4j记录日志? 日志记录对于任何应用程序都非常重要. 它可以帮助我们快速调试代码,通过收集代码执行的信息让代码容易维护. 二.Log4j 是什么? Apache为Java提供的日志 ...

  2. javaweb学习总结二十五(response对象的用法一)

    一:Reponse对象的概念 当客户端发送http请求时,服务器端会对每一次请求,创建request对象和response对象. response对象包括三个部分:响应头.响应状态码以及响应体 二:r ...

  3. JavaScript学习笔记(十五)——对象之Date,RegExp

    在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...

  4. 章节十五、6-log4 2-用默认的配置

    一.实例演示 package log4jtutorial; import org.apache.logging.log4j.LogManager; import org.apache.logging. ...

  5. 章节十五、7- 配置文件-Console Logging

    一.创建xml文件 1.创建xml文件 在项目中我们需要专门建一个文件夹来放xml文件或者是其它文件. 2.然后对文件夹进行命名 3.选择new  其它 4.选择XML File 5.给xml文件命名 ...

  6. 章节十五、9-自定义Loggers

    一.如何给不同的包设置不同的日志级别? 1.针对不同的包来记录不同级别的日志信息 2.在日志xml配置文件中加入配置信息(红色标注) <?xml version="1.0" ...

  7. 章节十五、8-配置文件File Logging

    一.如何将log输出到文件中? 1.配置xml文件 <?xml version="1.0" encoding="UTF-8"?> <Confi ...

  8. 章节十五、2-PageObjectModel

    一.在实现自动化过程中,会有很多重复的代码,我们在维护代码时会很困难,如果想解决这个问题,我们就需要使用PageObjectModel(页面对象模型)的方式来进行自动化代码的书写. 二.案例演示 以该 ...

  9. 三十五.MySQL读写分离 MySQL多实例 、MySQL性能调优

    1.实现MySQL读写分离 搭建一主一从结构 配置maxscale代理服务器 测试分离配置   1.1 搭建一主一从结构 192.168.4.51 主 192.168.4.52 从 测试OK   1. ...

随机推荐

  1. 一步一步教你用IntelliJ IDEA 搭建SSM框架(3)——实现用户登录功能

    上面两篇博客已经详细的介绍了在IntelliJ IDEA 搭建SSM框架的整个过程,下面我们就要在搭建好的环境里实现我们想要的功能了.本文完成用户的登录功能,主要包括:用户注册,登录,编辑,退出,注销 ...

  2. 求你了,再问你Java内存模型的时候别再给我讲堆栈方法区了…

    GitHub 4.1k Star 的Java工程师成神之路 ,不来了解一下吗? GitHub 4.1k Star 的Java工程师成神之路 ,真的不来了解一下吗? GitHub 4.1k Star 的 ...

  3. Product Backlog:终极任务清单

    健康的Product Backlog就像一个健康的人那样:整洁有序.组织合理.公开透明.一个按照优先级顺序排好的敏捷Backlog不仅能够简化发版和迭代计划,还能够对团队计划去做的所有工作进行细致规划 ...

  4. Git使用小技巧之挑拣合并

    先想想一个情况,现在我们有一个功能急需要发布到线上,但是这个功能相关的代码所在的测试分(test)支有很多不应该发布的代码,那么这个时候我们就需要将与这个代码相关的提交选择性的合并到master上并发 ...

  5. ConnectionPool实现redis在python中的连接

    这篇文章主要介绍了Python与Redis的连接教程,Redis是一个高性能的基于内存的数据库,需要的朋友可以参考下   今天在写zabbix storm job监控脚本的时候用到了python的re ...

  6. pdfminer获取整页文本

    #! python2 # coding: utf-8 import sys from cStringIO import StringIO from pdfminer import pdfinterp ...

  7. MYSQL Got error 28 from storage engine

    网络查找该异常信息,发现 Got error 28 from storage engine 查了一下,数据库文件所在的盘应该没事,应该是数据库用的临时目录空间不够 引用 磁盘临时空间不够导致. 解决办 ...

  8. 教你发布vue+.netCore项目到服务器

    最近一直在做项目,发布部署的事情都是同事或者老大做的,无奈什么事都要自己尝试经历后才能记住,所以发布的事情轮到我了,由于是第一次发布部署项目到一个新的服务器环境,难免会遇到各种各样的问题,总结下来,希 ...

  9. Java面试题汇总---升级版(附答案)

    前几天写了Java面试题汇总---基础版,总结了面试中常见的问题及答案,那我今天基于昨天的话题做一次升级,也就是说,求职者除了要学习了解哪些常见的基础面试题之外,还得准备些什么呢? 对有工作经验的求职 ...

  10. 【深搜(DFS)-例题-踏青】-C++

    描述 小白和他的朋友周末相约去召唤师峡谷踏青.他们发现召唤师峡谷的地图是由一块一块格子组成的,有的格子上是草丛,有的是空地.草丛通过上下左右 4 个方向扩展其他草丛形成一片草地,任何一片草地中的格子都 ...