java-testng-selenium优化
由于项目中webui测试的需要,是用testng+selenium的方式,其中遇到过几个问题,记录下,方便以后查看
1.重复运行多次case
因为是selenium,所以有的时候需要运行多次,方法是写一个Retry的类,继承testng的retry类就可以。
public class Retry implements IRetryAnalyzer {
private int retryCount = 0;
private int maxRetryCount = 3;
public boolean retry(ITestResult result) {
if (retryCount < maxRetryCount) {
retryCount++;
System.out.println(String.format("test failed!try %d time!",retryCount+1));
return true;
}
return false;
}
运行的时候就在case上加上
@Test(retryAnalyzer=Retry.class)
就可以拉
2.自定义annotions
虽然testng自带有很多注释,很好用,但是在项目中,组长要求在每个case前面能够描述一下这个case的作用,以后当case失败的时候,可以输出这个case的作用和失败原因,要外人不看代码也可以看的懂,所以就想自定义一个annotation,添加个decsription属性。
//UIMessage.java
import static com.myhexin.common.Assert.AssertEquals; import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.annotation.ElementType; import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface UIMessage {
String description();
} //应用
@UIMessage(description = "我是来试试的")@Test(retryAnalyzer=Retry.class)
@Parameters()
public void testDengLuZhangHao(){
/*
* 函数体
*/
}
//如何获取annotation的注释消息,我是用反射来获取的 Method[] methods=Class.forName("core.Member").getDeclaredMethods();
for(Method method:methods)
{
if(method.isAnnotationPresent( UIMessage. class))
{
System. out.println(method.getAnnotation( UIMessage. class).desciption());
}
}
3.selenium截图
目前该截图方式当在remote执行selenium时候,我只是在firefox下成功过,ie打死不行,场景是当case运行失败的时候截图,主要是重写下assert,当断言失败时候,截图,直接上,截图的代码
public void screenShot(WebDriver driver,int i)
{
String dir_name="./pic";
if (!(new File(dir_name).isDirectory())) { // 判断是否存在该目录
new File(dir_name).mkdir(); // 如果不存在则新建一个目录
} SimpleDateFormat sdf = new SimpleDateFormat("-HHmmss");
String time = sdf.format(new Date());
WebDriver augmentedDriver = new Augmenter().augment(driver); try {
File screenshot = ((TakesScreenshot)augmentedDriver).getScreenshotAs(OutputType.FILE); // 关键代码,执行屏幕截图,默认会把截图保存到temp目录
FileUtils.copyFile(screenshot, new File(dir_name + File.separator + i+ time + ".png")); // 这里将截图另存到我们需要保存
} catch (IOException e) {
e.printStackTrace();
}
}
java-testng-selenium优化的更多相关文章
- maven+selenium+java+testng+jenkins自动化测试
最近在公司搭建了一套基于maven+selenium+java+testng+jenkins的自动化测试框架,免得以后重写记录下 工程目录 pom.xml <project xmlns=&quo ...
- selenium从入门到应用 - 1,环境准备(Java+TestNG+Maven+Selenium)
本系列所有代码 https://github.com/zhangting85/simpleWebtest 本文将介绍一个Java+TestNG+Maven+Selenium的web自动化测试脚本环境的 ...
- 自动化测试框架selenium+java+TestNG——配置篇
最近来总结下自动化测试 selenium的一些常用框架测试搭配,由简入繁,最简单的就是selenium+java+TestNG了,因为我用的是java,就只是总结下java了. TestNG在线安装: ...
- 35 个 Java 代码性能优化总结
前言 代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用, ...
- Java程序性能优化技巧
Java程序性能优化技巧 多线程.集合.网络编程.内存优化.缓冲..spring.设计模式.软件工程.编程思想 1.生成对象时,合理分配空间和大小new ArrayList(100); 2.优化for ...
- Java的性能优化
http://www.toutiao.com/i6368345864624144897/?tt_from=mobile_qq&utm_campaign=client_share&app ...
- Java 代码性能优化总结
前言 代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用, ...
- Java代码性能优化总结
代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是, ...
- 《Java程序性能优化:让你的Java程序更快、更稳定》
Java程序性能优化:让你的Java程序更快.更稳定, 卓越网更便宜,不错的书吧
- [JAVA] java程序性能优化
一.避免在循环条件中使用复杂表达式 在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快. 例子: import java.util ...
随机推荐
- jmeter随笔(4)--中文url编码问题
最近在工作中,对jmeter实践的点滴的记录,这里分享交流,不一定正确,仅供参考和讨论,有想法的欢迎留言.谈论,手机上图片如果不清晰,请点击[阅读原文]查看. 技巧1:中文url编码问题 问题:我们抓 ...
- Android开发-API指南-创建 Content Provider
Creating a Content Provider 英文原文:http://developer.android.com/guide/topics/providers/content-provide ...
- HTTP 错误 500(Internal Server Error)
今天在用ajax请求页面的时候出现了这么一个错误:HTTP 错误 500(Internal Server Error) 由于提示较少,过了好一阵子才找到答案:ajax请求中调用了一个不存在的函数⊙﹏⊙ ...
- linux 将foo制定n, m之间行的内容, 追加到bar文件
sed -ne '196, 207 p' foo >> bar;把文件foo 196-行207行的内容追加到 bar文件
- 织梦dedecms中html和xml格式的网站地图sitemap制作方法
sitemap是网站上各网页的列表.创建并提交sitemap有助于百度(Google)发现并了解您网站上的所有网页,包括百度通过传统抓取方式可能找不到的网页.还可以使用sitemap提供有关你网站的其 ...
- iOS开发中view controller设置问题
- libpcap报文解析: ipv4、ipv6 @ 2014.7.2
#include <string.h> #include <stdlib.h> #include <pcap.h> #include <stdio.h> ...
- 为何要使用Linux
摈弃 Windows 低效率的工作方式,发掘 Linux 身上的 UNIX 气质 我已经半年没有使用 Windows 的方式工作了.Linux 高效的完成了我所有的工作. GNU/Linux 不是每个 ...
- Zend Studio GitHub 使用教程
这是我在开发项目时遇到的一些问题总结,目前基本实现协同开发.还有个问题是怎么才能像sf那样添加管理帐号,使用多个帐号协同开发,求教,欢迎留言讨论. 一.安装eGit插件 1. 由于zend studi ...
- ado.net工厂模式DbProviderFactories
DbProviderFactory f = DbProviderFactories.GetFactory(System.Configuration.ConfigurationManager.Conne ...