WebUI 自动化测试框架 PhoenixAutotest 发布 20170610

介绍

WebUI自动化测试框架phoenix.webui.framework发布20170610版本。

本次发布修正了一些bug,更多Isseus信息请访问Github。添加的主要功能如下:

增加了通过注解的方式来配置PageObject(页面对象),单元测试代码如下(本文所有的代码都可以在Github项目中获取):

/*
 *
    Copyright 2002-2007 the original author or authors.
   
    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at
   
         http://www.apache.org/licenses/LICENSE-2.0
   
    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
 *
 */

package org.suren.autotest.web.framework.page;

import org.suren.autotest.web.framework.annotation.AutoDataSource;
import org.suren.autotest.web.framework.annotation.AutoLocator;
import org.suren.autotest.web.framework.annotation.AutoPage;
import org.suren.autotest.web.framework.annotation.AutoStrategy;
import org.suren.autotest.web.framework.core.LocatorType;
import org.suren.autotest.web.framework.core.StrategyType;
import org.suren.autotest.web.framework.core.ui.Button;
import org.suren.autotest.web.framework.core.ui.Text;

/**
 * 使用注解的示例Page类
 * @author suren
 * @date 2017年6月7日 下午7:10:40
 */
@AutoPage(url = "http://maimai.cn/")
@AutoDataSource(name = "data", resource = "dataSource/xml/user_data_anno.xml")
public class AnnotationPage extends Page
{
    @AutoStrategy(type = StrategyType.PRIORITY)
    @AutoLocator(locator = LocatorType.BY_PARTIAL_LINK_TEXT, value = "实名动态")
    private Button toLoginBut;

    @AutoLocator(locator = LocatorType.BY_XPATH, value = "//input[@placeholder='请输入手机号码/脉脉号']")
    private Text phoneText;

    public Button getToLoginBut() {
        return toLoginBut;
    }

    public void setToLoginBut(Button toLoginBut) {
        this.toLoginBut = toLoginBut;
    }

    public Text getPhoneText() {
        return phoneText;
    }

    public void setPhoneText(Text phoneText) {
        this.phoneText = phoneText;
    }
}

测试代码如下:

/*
 *
    Copyright 2002-2007 the original author or authors.
   
    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at
   
         http://www.apache.org/licenses/LICENSE-2.0
   
    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
 *
 */

package org.suren.autotest.web.framework.util;

import org.junit.*;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.suren.autotest.web.framework.IgnoreReasonConstants;
import org.suren.autotest.web.framework.page.AnnotationPage;
import org.suren.autotest.web.framework.settings.DriverConstants;
import org.suren.autotest.web.framework.settings.SettingUtil;

import java.io.IOException;

/**
 * 测试使用注解配置的方式
 * @author suren
 * @date 2017年6月7日 下午7:10:12
 */
@Configuration
@ComponentScan(basePackages = "org.suren.autotest.web.webframework.page")
public class AutoAnnotationTest
{
    private SettingUtil util;

    @Before
    public void setUp()
    {
        util = new SettingUtil();
    }

    @Test
    public void basicTest()
    {
        util.getEngine().setDriverStr(DriverConstants.DRIVER_HTML_UNIT);
        util.getEngine().init();

        AnnotationPage page = util.getPage(AnnotationPage.class);

        Assert.assertNotNull(page);
        Assert.assertNotNull(page.getUrl());

        Assert.assertNotNull(page.getToLoginBut());

        page.open();
        page.getToLoginBut().click();
    }

    @Test
    @Ignore(value = IgnoreReasonConstants.REAL_BROWSER)
    public void realTest()
    {
        util.getEngine().setDriverStr(DriverConstants.DRIVER_CHROME);
        util.getEngine().init();
        util.initData();

        AnnotationPage page = util.getPage(AnnotationPage.class);
        page.open();
        page.getToLoginBut().click();

        page.getPhoneText().fillNotBlankValue();

        ThreadUtil.silentSleep(3000);
    }

    @After
    public void tearDown() throws IOException
    {
        util.close();
    }
}

期待更多更好用的功能请您持续关注本项目。支持开源,支持中国开源项目!!!

时间: 2024-10-14 17:52:07

WebUI 自动化测试框架 PhoenixAutotest 发布 20170610的相关文章

自动化测试框架PhoenixAutotest入门

介绍 这里介绍一个基于Selenium实现的一个web自动化测试框架,本框架主要是通过对Selenium的封装实现降低学习自动化测试框架的难度.  如果,您还对Selenium不了解的话,可以先参考<Selenium学习建议>. 入门知识 Java基础 环境 jdk1.8.Eclipse.Maven 入门 可以根据您的习惯来新建Java工程或者Maven工程.如果是Maven工程的话,请添加如下依赖: <dependencies> <dependency> <gr

越来越强大的SAFS/STAF/STAX自动化测试框架

上一次,向大家介绍了Openqa.org社区提供的.适合web应用的.开源的自动化测试框架 (开源测试工 具/社区(Selenium /OpenQA.org)--今非昔比 ).最近,看到STAF+STAX发布了最新版本,包括许多服务 组件,可以看出STAF+STAX的框架越来越完整,值得向大家推荐. September 24, 2008: STAF 3.3.1, STAX 3.3.4, Cron 3.3.3, Email 3.3.2, Event 3.1.2, EventManager 3.3.

Tellurium自动化测试框架介绍

Tellurium自动化测试框架是由方剑在2007年6月创建的用于测试Web应用的框架,并在2008年6月移步到Google Code成为一个开源项目.它会定期发布版本,当前版本号是0.7.0.项目的核心已经历时两年,并繁衍出了多个子项目,包括:UDL.Core.Engine.Widget扩展. Maven Archetype.Trump.Tellurium IDE.TelluriumWorks以及参考项目. 这个框架是从Selenium框架发展而来,但又具有不同的测试理念.大多数Web测试框架

从0到1开发自动化测试框架

一.序言 随着项目版本的快速迭代.APP测试有以下几个特点: 首先,功能点多且细,测试工作量大,容易遗漏: 其次,代码模块常改动,回归测试很频繁,测试重复低效: 最后,数据环境多样,用户场景复杂,功能回归覆盖难全面. 为节省成本,保证高效及高质量迭代,我们需采用更高效的测试方式,App自动化测试是较高效的手段. 之前自动测试实践过程中遇到的诸多问题(代码复用率低,Case开发及数据构造繁琐,问题定位困难,学习成本高等),为解决相关痛点问题,我们重新实现了一套APP自动测试框架.本文将着重介绍技术

开发基于XML的Selenium自动化测试框架

为解决该群体的困扰,本文将介绍如何让不熟悉编程的业务http://www.aliyun.com/zixun/aggregation/9621.html">测试人员也能编写出类似传统功能测试用例的自动化测试用例,从而扫除自动化测试的技术障碍. 本文适用于需要为测试团队开发自动化回归测试框架的测试设计开发人员.目前业内主流的商业自动化测试工具和开放源代码测试工具,都需要测试人员熟悉开发编程语言.但是过高的编程门槛让很多测试人员只能对自动化测试驻足遥望.为解决该群体的困扰,本文将介绍一种基于 X

《精通自动化测试框架设计》目录—导读

作者简介 精通自动化测试框架设计 陈冬严,浙江大学硕士,具有10年软件测试和团队管理的工作经验,先后服务于ITSM.PLM软件研发企业,现就职于某金融行业核心机构IT规划部门.业余时间喜欢园艺. 邵杰明,热爱测试工作,10多年的测试行业经验,曾先后供职于多家世界一流软件公司担任测试开发和测试管理工作,积累了丰富的行业工作经验,拥有PMP认证,目前担任测试架构师的工作,致力于自动化测试设计.持续交付等方面的工作. 王东刚,常用网名fastpoint,资深测试专家,<软件测试与Junit实践>作者

《精通自动化测试框架设计》—第2章 2.5节使用Exce

2.5 使用Excel2.5.1 经典的DataTable 在图2.2所示的调查中,Excel作为排名第一的数据源是情理之中的.甚至可以说,应该找不出来没有使用过Excel表格进行数据处理的读者.Excel的易用性.强大的数据处理功能,也能让即使不会编程的使用者可以快速解决一些常用的数据统计.计算的问题.在早期的商业自动化测试工具中,数据驱动或者关键字驱动是作为一个卖点被广为宣传的亮点.接触过这些工具的读者估计都对DataTable之类的概念印象深刻.在那个假设"系统测试工程师不懂代码"

腾讯Android自动化测试实战1.1 Android自动化测试框架概述

1.1 Android自动化测试框架概述 2007年Android开源时,Monkey.Instrumentation和MonkeyRunner这3个测试框架,是跟Android源码一起发布的,这也是最早可用的自动化测试框架,那几年大家基本都是用这些框架来开展自动化相关测试工作的.2010年,第一个第三方的测试工具Robotium(基于Instrumentation)发布了,不少测试人员就转用这个框架,Robotium社区逐步发展起来.图1-1所示为Robotium热度随时间变化的趋势. 201

腾讯Android自动化测试实战2.1.2 自动化测试框架基本原理

2.1.2 自动化测试框架基本原理 经过前面的一个简单的自动化测试案例,我们对Android的自动化测试有了一个感性的认识,很多有相关工作经验的测试同学也都会理解,这和PC的自动化测试思路是相通的,只不过所借助的框架不同,目前业界已经有很多成熟的开源Android端自动化测试框架,经常用到的框架代表有Robotium和UI Automator,各个框架可能在具体应用上有些不同,如有些偏稳定性,有些适用于Web应用,有些能支持跨应用,等等,但其主要思想是通过控件的位置.名称.属性等获取控件对象,并