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设计模式的实现,还是非常有必要的。
而且细看这些封装好的方法,其实是可以支持更多复杂的操作的,例如翻页、选择下拉选项、界面元素检查以及屏幕截图等等,这些方法的补充就看后续的业务需求了,如果有时间的话,我会从中抽出比较特殊而又有代表性的操作,结合这个框架进行介绍和演示的~~~·

发布了42 篇原创文章 · 获赞 15 · 访问量 9787

猜你喜欢

转载自blog.csdn.net/weixin_40326608/article/details/100983221