基于JAVA语言的selenium测试基础总结
目录
一、基本语句
1、循环控制(break,continue)
3、字符的替换(replace,repalceFirst,replaceAll,regex)
4、字符串的连接("+",append)
5、字符串的截取和分割(substring,split)
6、文件夹的创建与删除(mkdirs,delete)
7、文件的读写(BufferedWrite,BufferedReader)
8、系统时间的获取( ((Calendar.getInstance()).get(Calendar.YEAR) )
9、时间格式的转换(SimpleDateFormat)
二、浏览器自动化操作(基于maven包)
(一)对浏览器的基本操作
(二)网页元素的定位
1、name定位
2、class定位
3、css定位
4、ID定位
5、tagName定位
6、link,partialLink定位(a)
7、xpath定位
(三)对鼠标的悬停操作(Actions)
(四)对悬浮框alert的操作(accept,dismiss)
(五)在网页框架上的切换(frame,defaultContent)
(六)网页跳转确认(assert,isDisplayed)
三、自动化功能的实现(基于TestNG)
1、基础框架
2、数据与编码分离的框架(excel,FeedTest)
一、基本语句
1、循环控制(break,continue)
break用于结束整个循环;
continue用于结束本次循环,以进行下一次循环。
2、字符及字符串的比较(compareTo,equals,compareToIgnoreCase,equalsIgnoreCase)
compareTo和compareToIgnoreCase结果返回的是int(两个字符串的第一个不同字符的ASCII差值);
equals和equalsIgonrCase结果返回的是bool值(true、false);
compareTo和equals区分大小写,-IgnoreCase忽略大小写。
示例:"abc".compareTo("bac");
"Abc".equalsIngoreCase("abc");
3、字符的替换(replace,repalceFirst,replaceAll,regex)
样:"Ab cdef ab".replace("ab","xy")
replace:将前边字符串中的ab替换为xy,区分大小写;
repalceFirst:将第一个ab替换为xy;
replaceAll:将所有的ab都替换为xy;
严格正则表达式:String regex="^[0-9]{4}$";表示只替换是且仅是连续4位的数字;
非严格的正则表达式:String regex="[0-9]{4}",只要存在的位连续的4位数字就进行替换;
例:"1324adb568872".repalce(regex,"xx"); //此表达式如果regex是严格的就只会替换1324,如果是非严格的就会替换1324和5688.
4、字符串的连接("+",append)
"+"可以将多个字符串连接,append是有字符串的末尾追加,不过从运行速度来说,append比“+”的效率高,速度快。
例:String str1="abc"+"bcd";
String str2="abc".append("bcd");
5、字符串的截取和分割(substring,split)
样:"abcdefg".substring(4);//结果:"efg",删截掉了前四个字符;
"abcdef".substring(0,4);//截取两个位置之间的字符;
"abd fghk".split(" ");//在空格处分割字段;?????
6、文件夹的创建与删除(mkdirs,delete)
String str="D:/practice1/practice2";
File file=new File(str);
file.mkdirs();//文件夹的创建;
file.delete();//删除;
String str2="D:/practice1/practice2/11.txt";
File file2=new File(str2);
file2.createNewFile();//创建文件。
file2.delete();//删除
7、文件的读写(BufferedWrite,BufferedReader)
BufferedWriter bw=new BufferedWriter(new FileWriter("filename"));//创建写入流。读取流的创建也一样,只是换用BufferedReader()。
bw.write("What a sunny day!");
bw.newLine();//换行
bw.close();//一般用完文件都要关闭。
判断文件是否存在:String str; (str=br.readLine())!=null;
8、系统时间的获取( ((Calendar.getInstance()).get(Calendar.YEAR) )
Calendar cal=Calender.getInstance();
int year=cal.get(Calendar.YEAR);//当前年份
int month=cal.get(Calendar.MONTH)+1;//系统对月的统计是从0开始的,故要+1
int date=cal.get(Calendar.DATE)//日
int day1=cal.get(Calendar.DAY_OF_WEEK)//一周中的第几天
int day2=cal.get(Calendar.DAY_OF_MONTH)//一月中的第几天
int day3=cal.get(Calendar.DAY_OF_YEAR)//一年中的第几天
9、时间格式的转换(SimpleDateFormat)
long time=System.currentTimeMillis();//当前系统日期
String str1="MM/dd/yyyy";
String str2="yyyy/MM/dd";
String str3="yyyy/MM/dd HH:mm:ss";
String str4="yyyy/MM/dd HH:mm:SS";
String str5="yyyy/MM/dd HH:mm:s";//时间格式,H-24小时制,s-秒,S-毫秒
SimpleDateFormat form1=new SimpleDateFormat(str)
System.out.println(form1.format(time));//格式转换
二、浏览器自动化操作(基于maven包)
(一)对浏览器的基本操作
System.setProperty("webdriver","C:\\PromgramFiles\浏览器物理位置\firefox.exe");//设置默认浏览器。
WebDriver driver=new FirefoxDriver();//打开浏览器
driver.manage().window().maximize();//最大化
driver.manage().timeOuts().ImplicitlyWait(5,TimeUnit.SECONDS);智能等待5秒
Thread.sleep(5000);//等待5秒
driver.get("http://网址");//打开网页
driver.close();//关闭当前浏览器
driver.quit();//关闭浏览器进程
(二)网页元素的定位
就火狐浏览器而言,大部分元素都可以用插件firebug找到,只有css类型需要用seleniunIDE进行查阅。
1、name定位
driver.findElement(By.name("xxx"));
2、class定位
driver.findElement(By.className("xxx"));
3、css定位
driver.findElement(By.cssSelector("input[type='button']));
4、ID定位
driver.findElement(By.id("xxx"));
5、tagName定位
driver.findElement(By.tagName("xxx"));
6、link,partialLink定位(a)
driver.findElenment(By.linkText("xxx"));//link需要链接后边的全部内容来进行定位,而partialLink只需要写入一部分就能进行查找定位。
7、xpath定位
driver.findElememt(By.xpath("/html/body/每一层路径/目标"));
driver.findElement(By.xpath("//input[@value='值']");
driver.findElement(By.xpath("//img[@alt='图片名']");//图片名为在网页上,按住alt并将鼠标移动到图上时所显示的名称。
driver.findElement(By.xpath("//img[contains(@alt,'xxx')]");
driver.findElement(By.xpath("//a[text()='xxx']");//对于链接的通过xpath定位不需要用@,而用示例所给格式。
(三)对鼠标的悬停操作(Actions)
Actions action=new Actions(driver);//建立对于浏览器的鼠标动作
action.moveToElement("位置").perform();//移动到某一位置,perform()用于确认。
action.clickAndHold("位置”).perform();//按住并移动
action.release("位置").perform();释放鼠标
(四)对悬浮框alert的操作(accept,dismiss)
driver.switchTo().alert().sendKeys("xxx");//转到悬浮框并写入
driver.swithcTo().alert().accept();//确认
driver.swithcTo().alert().dismiss();//取消
(五)在网页框架上的切换(frame,defaultContent)
driver.switchTo().frame("xxx");
driver.switchTo().defaultContent();//从一个框架向另一个框架移动一般都需要先跳转回这个主框defautlContent()
(六)网页跳转确认(assert,isDisplayed)
Assert.assertTrue(driver.findElement(By.name("xx")).isDisplayed();//确认跳转后页面的某一元素的出现。
三、自动化功能的实现(基于TestNG)
1、基础框架
package testNG
public class test{
@Test(dataProvider="dp")//功能的主要实现结构
public void mainn(String a,int b,Stringc){
}
@DataProvider(name="dp")//数据提供者
public Object[][] dp(){
Object[][] abc={ {"ab","5","bc"},{"bc","3","xx"}};
}
@Test(dependsOnMethods="mainn")//接着mainn之后运行
public void add{
}
}
2、数据与编码分离的框架(excel,FeedTest)
package testNG;
public class test extends FeedTest //extends FeedTest为追加
{
@Test(dataProvider="feeder")//feeder为固定用语
@Souce("data/1.xls")//data为eclips内一个文件夹路径,1.xls为excel源文件,需要将它复制到eclips中此路径下才能生效。
public void mainn(String a,String b,String c,int x){
}
基于JAVA语言的selenium测试基础总结的更多相关文章
- 基于JAVA语言的selenium总结
目录一.基本语句 1.循环控制(break,continue) 3.字符的替换(replace,repalceFirst,replaceAll,regex) 4.字符串的连接("+" ...
- 基于Java语言开发jt808、jt809技术文章精华索引
很多技术开发人员喜欢追逐最新的技术,如Node.js, go等语言,这些语言只是解决了某一个方面,如只是擅长异步高并发等等,却在企业管理后台开发方面提供的支持非常不够,造成项目团队技术选项失败,开发后 ...
- 基于JAVA语言的多线程技术
1.简介 多线程技术属于操作系统范围内的知识: 进程与线程 可以这么理解,一个应用程序就是一个进程,在一个进程中包含至少一个线程:进程就是线程的容器,真正工作.处理任务的是线程. 进程是操作系统分配资 ...
- JFinal -基于Java 语言的MVC极速 web 开发框架
JFinal概述 JFinal 是基于Java 语言的极速 web 开发框架,其核心设计目标是开发迅速.代码量少.学习简单.功能强大.轻量级.易扩展.Restful.在拥有Java语言所有优势的同时再 ...
- 单循环链表(基于java语言)
public class CircleSinglyLinkList { private Node head; CircleSinglyLinkList(){ this.head = null; } C ...
- Selenium(基于JAVA语言)-》在eclipse上运行web项目在Mac系统上启动时提示nodename nor servname provided解决办法
最近使用eclipse进行自动化测试时,遇到一种情况,无法调起浏览器,且有报错,如下: org.openqa.selenium.WebDriverException: failed to lookup ...
- 网上的JAVA语言的某个测试框架
https://github.com/wenchengyao/testLJTT.git 使用maven打包,mvn clean install 在运行的时候,java -jar testLJTT.ja ...
- 基于Java的四大开源测试工具
摘要:成功的应用程序离不开测试人员和QA团队反复地测试,应用程序在进行最后的部署之前,需要通过测试来确保它的负载管理能力以及在特殊情况下的工作条件和工作加载情况. %R[)vA t]N0 测试是应用程 ...
- Java语言程序与数据结构(基础篇)-随记
有关代码见BasicJava U1-Java概述 1-程序设计风格和文档 1.注释风格 注释:// ; 块注释:/* ~ / ; javadoc注释:/* ~ */ javadoc注释 eg. /** ...
随机推荐
- 算法一之N皇后问题
(写这篇文章主要是明天就要考试了,算法考试,今天不想再复习了,xiang着今天也开通了博客,于是在这个平台上进行复习,应该会更高效.最后祝愿我明天考个好成绩.嘻嘻...) n皇后问题,主要是应用到回溯 ...
- Codeforces758B
B. Blown Garland time limit per test:1 second memory limit per test:256 megabytes input:standard inp ...
- 【Spring-web】AsyncRestTemplate源码学习
2017-01-23 by 安静的下雪天 http://www.cnblogs.com/quiet-snowy-day/p/6343347.html 本篇概要 类说明 类图 简单例子 精辟的内部类 类 ...
- iOS开发中@property的属性weak nonatomic strong readonly等介绍
@property与@synthesize是成对出现的,可以自动生成某个类成员变量的存取方法.在Xcode4.5以及以后的版本,@synthesize可以省略. 1.atomic与nonatomica ...
- Swift资料大全
简单看了一下swift的语法,个人感觉相对于object-c很是简单明了.Swift的出现并不能说明iOS开发简单了很多,有可能会变得复杂,你需要学习两门编程语言,因为在程序员的世界里,务实并不是最重 ...
- 网站SEO,HTTP请求的关键数字----6
客户端浏览器向服务器请求一个网页素材. 那么网页素材是通过什么方式,什么顺序被下载下来的呢. 我今天做了个简单的测试. 首先,准备测试文件 写一个网页,网页中引用若干的资源文件. 同一文件的不同的参数 ...
- Linux 6.4 partprobe出现warning问题
今天在给服务器做LVM的时候(服务器的系统是CentOS 6.3),用fdisk分区之后,用w写入分区表的时候,就提示Command (m for help): wThe partition tabl ...
- Linux输入子系统(一) _驱动编码
输入设备都有共性:中断驱动+字符IO,基于分层的思想,Linux内核将这些设备的公有的部分提取出来,基于cdev提供接口,设计了输入子系统,所有使用输入子系统构建的设备都使用主设备号13,同时输入子系 ...
- APP中的 H5和原生页面如何分辨、何时使用
一.APP内嵌H5和原生的区别 1.原生的页面运行速度快,比较流畅. H5页面相对原生的运行性能低,特别是一些动画效果有明显卡顿. 2.H5页面的很多交互都没有原生的好,比如弹层.输入时候的页面滑动 ...
- Xcode插件失效解决办法
升级完Xcode突然间发现之前安装的所有插件都不生效了,费了九牛二虎之力找到了解决办法... 1.打开终端,输入以下代码获取到DVTPlugInCompatibilityUUID ...