本次发布修正了一些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();
}
}
期待更多更好用的功能请您持续关注本项目。支持开源,支持中国开源项目!!!
•参考
本文为原创,如果您当前访问的域名不是surenpi.com,请访问“
素人派”。
分享到:
相关推荐
使用Java+Maven+Selenium+TestNG+Jedis+Jenkins搭建的WebUI自动化测试框架,资源的大体介绍如下链接http://note.youdao.com/noteshare?id=dc564343fd126f497074f6d7560c9f5e&sub=387EB3B1BAC945CEA71A5BDBC6484473
【WebUI自动化测试框架】是一种高效且便捷的测试解决方案,主要针对Web应用程序的用户界面进行自动化测试。这个框架是建立在Selenium库之上的,Selenium是一个强大的、跨平台的Web自动化测试工具,支持多种浏览器和...
总之,"Python实现Web UI自动化测试实战-Chapter-12"涵盖了使用Python和Selenium进行Web UI自动化测试的各个方面,从基础概念到高级技巧,旨在帮助读者构建一套完整的自动化测试框架,提升测试质量和效率。...
基于Python的webUI自动化测试框架,支持多平台~ 支持xmind文件转为测试用例,目前存在部分问题 支持chrome驱动自动下载 支持用例重跑及自动错误截图 使用antd美化html报告 采用po模式,定位元素与实际操作分离,同...
【标题】中的“自动化测试框架,支持接口自动化、WEB UI自动化、APP UI自动化”涉及到的是软件测试领域的一个重要话题。这个框架集成了多种自动化测试的能力,涵盖了从后端API到前端UI的全方位测试。 首先,接口...
Dagger是网易杭州研究院QA团队开发的一个轻量级、运行稳定的WebUI自动化测试框架,主要基于Selenium及TestNg可以认为是对Selenium进行二次封装的一个框架(俗称 造轮子 )。之所以把这个轮子开源出来,主要在于...
这是一款无需编码即可实现WebUI自动化测试的平台。为了方便新手尽快熟悉平台,每一页都有帮助向导!
本源码提供了一个基于Java的Phoenix WebUI自动化测试框架的设计。项目包含178个文件,其中包括127个Java文件、15个Markdown文档、14个XML文件、9个Properties文件、2个YAML文件,以及用于版本控制和文档的文件。此外...
写过UI自动化测试脚本的朋友,相信都会遇到过,比如前端页面元素改了,又需要去改自己写的脚本,而且只能针对某个web页面的定制化设计,换个web项目就不灵了。 我就在考虑,为什么UI自动化框架就不能通用在不同的...
"phoenix.webui.framework"是一个基于WebDriver的Web用户界面(WebUI)自动化测试框架,它为开发者和测试工程师提供了一套高效、稳定的自动化测试解决方案。这个框架的核心是使用WebDriver,这是一个跨浏览器的测试...
在构建App-UI自动化测试框架时,Python语言与Selenium、Appium、Pytest和YAML等工具结合,可以提供高效且灵活的解决方案。这里我们将深入探讨这些技术以及如何利用它们来实现Android应用的自动化测试。 首先,让...
本文将深入探讨如何使用Python结合Selenium和Pytest构建一个强大的Web自动化测试框架,实现功能巡检、生成测试报告以及通过邮件发送测试结果。 首先,Python是一种广泛应用于测试领域的编程语言,其简洁明了的语法...
Web UI自动化测试框架(基于Selenium) 框架简介 基于python语言对selnium做的二次封装,主要有以下特点: 1.采用了主流的po模式2.实现了日志的记录与输出3.美观的测试报告输出4.灵活的测试用例获取5.数据库连接6....
Web自动化测试框架搭建是现代软件开发过程中的重要环节,它能显著提高测试效率,减少人工错误,确保产品质量。本文将详细介绍自动化测试理念以及如何构建一个分层的自动化测试框架,并结合持续集成(CI)进行管理。 ...
基于python3 + unittest + po模式 关键字驱动 Web UI 自动化测试框架源代码 功能概述 PO模式架构 webdriver封装 发送邮件测试报告 支持Chrome, Edge, Firefox浏览器 浏览器驱动自动下载安装 支持 mysql 数据库 使用 ...
使用pytest+selenium+allure+logging+yml+openpyxl+pymysql+pymssql+docker组合而成的自动化测试框架,实现了数据分离,以关键字进行驱动,还进行跳过登录等操作,最后使用docker将其创建成镜像,让其使用更加方便,...
简化队长chrome类介绍: 队长chrome类本来是简化...目前3种控制浏览器自动化测试的3种组合方式, 1.队长浏览器类和队长标签页类组合(总有一种方式适合你的), 2.队长浏览器_*子程序命令和队长标签页类组合, 3.队长chome类
适合学习/练手、毕业设计、课程设计、期末/期中/大作业、工程实训、相关项目/竞赛学习等。 项目具有较高的学习借鉴价值,也可直接拿来修改复现。可以在这些基础上学习借鉴进行修改和扩展,实现其它功能。...
"基于C# UI Automation自动化测试自动化测试示例工程" 是一个使用C#编程语言构建的项目,其核心目标是实现UI(用户界面)自动化测试。UI Automation是.NET Framework提供的一种用于测试Windows应用程序用户界面的...
本框架只是对 selenium( webdriver ) 原生方法进行了简单的封装,精简为大约 30 个方法,这些方法基本能够胜任于我们的web自动化测试。基于 unittest 单元测试框架,所以测试文件与测试方法遵循unittest开发。自动...