Java Selenium框架的开发和优化教程-02
1.前言
在上一篇博文《Java Selenium框架的开发和优化教程-01》中,我已经介绍了框架的项目结构和核心代码,因此这篇文章的主要内容就是演示如何编写业务代码,然后查看框架的运行结果等。
2.业务实现代码
我以操作百度为例,这个demo的业务很简单,就是“打开百度首页 -> 输入关键字 -> 点击搜索”。
业务代码在项目中的结构如下图:
2.1 将需要用到的界面元素封装成UiFinder
这就是对于设计模式中,Page-Object模式的实现。在这个业务中,我需要三个元素:
- 百度首页url
- 搜索输入框
- 搜索按钮
将他们初始化为UiFinder,作为静态变量,保存在一个统一的BaiduUiFinders类中,代码如下:
package com.javaseleniumdemo.impl;
import com.javaseleniumdemo.core.UiFinder;
import org.openqa.selenium.support.How;
/**
* @author Joy
*/
public class BaiduUiFinders {
public final static String URL = "http://www.baidu.com";
//搜索输入框
public final static UiFinder searchInput = new UiFinder(How.ID,"kw");
//“百度一下”按钮
public final static UiFinder searchButton = new UiFinder(How.ID,"su");
}
2.2 业务实现
我创建一个BaiduCrawler的类,作为业务实现的代码。然后为类添加一个crawl()的方法,方法中就可以调用核心代码中的UiActtions类中所提供的各种UI操作方法了,代码如下:
package com.javaseleniumdemo.impl;
import com.javaseleniumdemo.core.UiActions;
import static com.javaseleniumdemo.impl.BaiduUiFinders.*;
/**
* @author Joy
*/
public class BaiduCrawler {
public void crawl(){
try{
UiActions.initialUiContext();
System.out.println("打开百度首页。");
UiActions.navigateTo(URL);
UiActions.operationInterval(1000);
System.out.println("开始执行搜索。");
UiActions.sendKeys(searchInput, "Java Selenium框架的开发和优化教程");
UiActions.click(searchButton);
UiActions.operationInterval(1000);
} catch (Exception e){
e.printStackTrace();
System.out.println(e.getMessage());
} finally {
System.out.println("浏览器关闭。");
UiActions.disposeUiContext();
}
}
}
2.3 Main方法调用
Main方法调用代码如下:
import com.javaseleniumdemo.impl.BaiduCrawler;
/**
* @author Joy
*/
public class Main {
public static void main(String[] args){
BaiduCrawler crawler = new BaiduCrawler();
crawler.crawl();
}
}
3.查看运行结果
使用debug模式,运行项目,运行正常,结果如图:
4.后记
虽然演示的业务代码非常简单,但是框架中这种对于selenium方法的封装,以及对Page-Object设计模式的实现,还是非常有必要的。
而且细看这些封装好的方法,其实是可以支持更多复杂的操作的,例如翻页、选择下拉选项、界面元素检查以及屏幕截图等等,这些方法的补充就看后续的业务需求了,如果有时间的话,我会从中抽出比较特殊而又有代表性的操作,结合这个框架进行介绍和演示的~~~·