基于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){

}

时间: 2024-10-13 22:20:31

基于JAVA语言的selenium测试基础总结的相关文章

Python 语言搭建SELENIUM测试环境,搭建过程记录。

第一步,安装Python: 第二步,安装SetupTools: 第三步,安装Pip: 第四步,安装selenium(for python) 第五步,新建第一个基于Firefox的测试用例 上述 只是步骤,具体内容,明天补充,睡觉 咯--- Python 语言搭建SELENIUM测试环境,搭建过程记录.

基于Java的四大开源测试工具

摘要:成功的应用程序离不开测试人员和QA团队反复地测试,应用程序在进行最后的部署之前,需要通过测试来确保它的负载管理能力以及在特殊情况下的工作条件和工作加载情况. %R[)vA t]N0 测试是应用程序生命周期里至关重要的一步,应用程序在进行最后的部署之前,需要通过测试来确保它的负载管理能力以及在特殊情况下的工作条件和工作加载情况. 51Testing软件测试网tN U%hG!]+L9gr 网络上许多开源的Java测试工具,然而真正经得起时间和实践考验的不多,本文例举了Java里的四大开源测试工

基于Java语言构建区块链(一)—— 基本原型

引言 区块链技术是一项比人工智能更具革命性的技术,人工智能只是提高了人类的生产力,而区块链则将改变人类社会的生产关系,它将会颠覆我们人类社会现有的协作方式.了解和掌握区块链相关知识和技术,是我们每位开发人员必须要去做的事情,这样我们才能把握住这波时代趋势的红利. 本文将基于Java语言构建简化版的blockchain,来实现数字货币. 创建区块区块链是由包含交易信息的区块从后向前有序链接起来的数据结构.区块被从后向前有序地链接在这个链条里,每个区块都指向前一个区块.以比特币为例,每个区块主要包含

基于JAVA语言的多线程技术

1.简介 多线程技术属于操作系统范围内的知识: 进程与线程 可以这么理解,一个应用程序就是一个进程,在一个进程中包含至少一个线程:进程就是线程的容器,真正工作.处理任务的是线程. 进程是操作系统分配资源的基本单位:线程是操作系统进行调度,时间分配的基本单位: 进程由内核对象和地址空间两部分构成,内核对象就是一小块记录进程信息的内存,只允许操作系统访问:地址空间就是存放数据和程序的空间: 2.多线程运行机制 对于单个CPU,在每个时间点只能只能执行一个线程,多线程的实现是基于对时间片的轮回机制的,

基于python语言的Selenium自动化测试

  一.Selenium简介 Selenium是一个web自动化应用测试工具,还支持所有的web的管理任务自动化.并且开源免费,也是一个web自动化轻量级框架.它支持多种浏览器.跨平台.跨操作系统.支持多种编程语言编写脚本,还能进行分布式测试用例的执行. Selenium经历三个版本,Selenium1.Selenium2.Selenium3.它不是单独的一个工具,而是由一些类库.插件.工具等组合而成.主要的工具: Selenium IDE:Selenium IDE是嵌入火狐浏览器中的一个插件,

基于java语言的给cube添加custom view来实现权限控制

今天是农历2014年的最后一个工作日了,在这里提前祝大家新年快乐.羊年大吉!当然本人今天也拿出来点儿真东西,做为献给大家的新年礼物,依次共勉. 下文主要讲述的是使用Java代码来完成对cube基于部门维度创建custom view,实现角色级别的权限控制 第一部分:通用数据库设计 1:事实表(订单分析)--存放departkey关联部门 2:维度表(部门) 3:赋权表 role_id以及对应的role_name,来源于cognos cjap认证中的角色表depart_id以及对应的depart_

基于Java语言构建区块链(三)—— 持久化 & 命令行

引言上一篇 文章我们实现了区块链的工作量证明机制(Pow),尽可能地实现了挖矿.但是距离真正的区块链应用还有很多重要的特性没有实现.今天我们来实现区块链数据的存储机制,将每次生成的区块链数据保存下来.有一点需要注意,区块链本质上是一款分布式的数据库,我们这里不实现"分布式",只聚焦于数据存储部分. 给大家推荐一个java内部学习群:725633148,进群找管理免费领取学习资料和视频.没有错就是免费领取!大佬小白都欢迎,大家一起学习共同进步! 数据库选择 到目前为止,我们的实现机制中还

基于java语言简单版的学生信息系统

功能简介: a:可以对学生信息增删改查, b:每一种操作都是使用容器进行 c:使用自己写的工具类,可以实现多次调用,实现代码的复用,增加可读性 d:语法使用嵌套循环,一般使用while,swich..case,for 代码实现: //测试类 package com.xinboedu.www.test; public class TestSystem { public static void main(String[] args) { StudentSystem studentSystem = n

基于Java语言的MD5加密Base64转换方法

提供了基于MD5加密16位和32位的方法 1 import java.io.IOException; 2 import java.math.BigInteger; 3 import java.security.MessageDigest; 4 import java.security.NoSuchAlgorithmException; 5 import sun.misc.BASE64Decoder; 6 import sun.misc.BASE64Encoder; 7 /** 8 * <p>标