欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

基于Selenium的Web UI自动化实现(java)

程序员文章站 2022-07-14 08:53:52
...

做了一段时间的自动化,现在整理出了一些个人的见解,后续计划照着这个步骤进行深入学习。

首先我认为,一个较完善的自动化项目,需要考虑以下问题:
1)测试用例的存放与读取
2)对浏览器的各种操作
3)如何定位元素与执行用例
4)如何判断执行结果是否正确(断言)
5)在执行过程中打印日志
6)执行完成后生成报告

我写了一个小项目,实现了上面的2和3这两步。这个项目所完成的功能就是“打开百度,搜索12306”。具体实现过程如下

一、创建项目

在 eclipse 中新建项目取名为 WebUIAuto,新建了几个 package:

  • main
    存放实现自动化过程的 java 代码
  • test
    存放执行测试的 test 类
  • resource
    存放一些资源及配置文件
  • utils
    存放一些常用的工具类

二、新建配置文件

为了方便后期的维护,我将一些可能随时修改的东西放进了配置文件中,比如使用的浏览器、需要访问的地址等。

在 resource 文件夹下新建 input.properties 文件,记录我们需要用到的浏览器与地址,如下:
基于Selenium的Web UI自动化实现(java)
注意在这个 properties 文件中,“=”后面最好不要留空格,否则在打开 url 时可能报错。

三、读取配置文件

在 utils 文件夹下新建 Config 类,用来读取配置文件中的配置。代码如下:

public class Config {
  
  public static Properties getProperties(){
    InputStream inputStream = null;
    inputStream = Config.class.getResourceAsStream("/resource/input.properties");
    Properties properties = new Properties();
    try {
      properties.load(inputStream);
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    return properties;
  }
}

四、实现浏览器的操作

在 main 文件夹下新建 Browser 类,实现浏览器操作的各种方法。代码如下:

public class Browser {
  
    public WebDriver webDriver;

    /**
     * 初始化webdriver,打开地址
     * @param url
     * @return
     */
    public WebDriver openUrl(String url){
      Properties properties = Config.getProperties();
      String browser = properties.getProperty("browser");
      switch(browser){
      case "firefox":
        System.setProperty("webdriver.gecko.driver", "D:\\Firefox\\geckodriver.exe");
        webDriver = new FirefoxDriver();
        break;
      case "ie":
           System.setProperty("webdriver.id.driver", "");
        webDriver = new InternetExplorerDriver();
        break;
      default:
        System.setProperty("webdriver.chrome.driver", "D:\\Chrome\\chromedriver.exe");
        webDriver = new ChromeDriver();
        break;
      }
      webDriver.get(url);
      webDriver.manage().window().maximize();
        return webDriver;
    }
    
    /**
     * 退出浏览器
     */
  public void close(){
    try{
      //延迟两秒关闭浏览器
      Thread.sleep(2000);
      webDriver.close();
    }catch (Exception e) {
      // TODO: handle exception
    }
  }
}

这里需要去网上下载一些东西:

  • selenium webdriver 对应的 jar 包
    添加方式为右键点击项目 -> properties -> Java Build Path,如图
    基于Selenium的Web UI自动化实现(java)
  • 下载浏览器对应的驱动
    firefox — geckodriver.exe
    chrome — chromedriver.exe
    注意驱动的版本要和浏览器版本对应

五、编写实现操作的方法

打开浏览器后,我们要实现的方法有两个,一是向输入框中输入要查找的内容,二是点击搜索按钮。这两个方法是在同一个页面上进行操作的,所以我们将页面作为对象,在 main 下面新建 SearchPage 类。代码如下:

public class SearchPage {

  /**
   * 输入内容
   * @param driver
   * @param keyword
   */
  public void input(WebDriver driver,String keyword){
    driver.findElement(By.id("kw")).sendKeys(keyword);
  }

  /**
   * 点击搜索按钮
   * @param driver
   */
  public void search(WebDriver driver){
    driver.findElement(By.id("su")).click();
  }  
}

其中,对页面的操作是通过 findElement By id 的方式来定位的,详细定位方式将在后面介绍。

六、填充数据,执行操作

浏览器和页面的操作都已经封装完成了,接下来就看是否能执行我们预期的操作,在 test 文件夹下新建 TestSearch 类,代码如下:

public class TestSearch {

  @Test
  public void testSearch(){
    Browser browser = new Browser();
    Properties properties = Config.getProperties();
    WebDriver driver = browser.openUrl(properties.getProperty("url"));
    SearchPage search = new SearchPage();
    search.input(driver, "12306");
    search.search(driver);
    driver.close();
  }
  
}

我们采用 TestNG 来执行测试,注意对应的包是

org.testng.annotations.Test;

不要导成了 JUnit 下面的 TestNG

右键点击项目或 TestSearch 类 -> Run As -> TestNG Test,可以看到项目成功运行。
基于Selenium的Web UI自动化实现(java)
扫码关注微信公众号
基于Selenium的Web UI自动化实现(java)

相关标签: Selenium 自动化