目录
一、基本语句
  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和equalsIgonreCase结果返回的是布尔值(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)

 基础框架

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"}};

  return abc;

     }

     @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){

     }

四、 Web自动化的页面等待方式

3种方式

1.强制等待 sleep(xx)

2.隐性等待 implicitly_wait(xx)

          这种方法是设置一个最长的等待时间,如果在规定时间内网页全部元素加载完成,则执行下一步,否则一直等待时间截止才执行下一步。比强制性等待智能些
!隐性等待对整个driver的周期都起作用,所以只要设置一次即可。

3.显性等待 WebDriverWait    

WebDriverWait配合该类的until()和until_not()方法,根据条件灵活的等待
         程序每隔xx秒看一眼,如果条件成立了,则执行下一步,否则继续等待,直到超过设置的最长时间,然后抛出TimeoutException。

  A. 使用前,先引用相关库

  B. 确定元素的定位表达式

  C.  使用expected_conditions对应的方法来生成判断条件

  WebDriverWait(driver,10,1).until(EC.visibility_of_element_located((By.ID,ele_locator)))
  WebDriverWait(driver,10,1).until(EC.visibility_of_element_located((By.XPATH,ele_locator)))

       D.  调用WebDriverWait类设置等待总时长、轮询周期

基于JAVA语言的selenium总结的更多相关文章

  1. 基于JAVA语言的selenium测试基础总结

    目录一.基本语句1.循环控制(break,continue)3.字符的替换(replace,repalceFirst,replaceAll,regex)4.字符串的连接("+",a ...

  2. 基于JAVA语言的多线程技术

    1.简介 多线程技术属于操作系统范围内的知识: 进程与线程 可以这么理解,一个应用程序就是一个进程,在一个进程中包含至少一个线程:进程就是线程的容器,真正工作.处理任务的是线程. 进程是操作系统分配资 ...

  3. JFinal -基于Java 语言的MVC极速 web 开发框架

    JFinal概述 JFinal 是基于Java 语言的极速 web 开发框架,其核心设计目标是开发迅速.代码量少.学习简单.功能强大.轻量级.易扩展.Restful.在拥有Java语言所有优势的同时再 ...

  4. 基于Java语言开发jt808、jt809技术文章精华索引

    很多技术开发人员喜欢追逐最新的技术,如Node.js, go等语言,这些语言只是解决了某一个方面,如只是擅长异步高并发等等,却在企业管理后台开发方面提供的支持非常不够,造成项目团队技术选项失败,开发后 ...

  5. 单循环链表(基于java语言)

    public class CircleSinglyLinkList { private Node head; CircleSinglyLinkList(){ this.head = null; } C ...

  6. Selenium(基于JAVA语言)-》在eclipse上运行web项目在Mac系统上启动时提示nodename nor servname provided解决办法

    最近使用eclipse进行自动化测试时,遇到一种情况,无法调起浏览器,且有报错,如下: org.openqa.selenium.WebDriverException: failed to lookup ...

  7. 《神经网络算法与实现-基于Java语言》的读书笔记

    文章提纲 全书总评 读书笔记 C1.初识神经网络 C2.神经网络是如何学习的 C3.有监督学习(运用感知机) C4.无监督学习(自组织映射) Rreferences(参考文献) 全书总评 书本印刷质量 ...

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

    今天是农历2014年的最后一个工作日了,在这里提前祝大家新年快乐.羊年大吉!当然本人今天也拿出来点儿真东西,做为献给大家的新年礼物,依次共勉. 下文主要讲述的是使用Java代码来完成对cube基于部门 ...

  9. 基于Java语言的IO操作(文件复制)

    public static void main(String[] args) { //获取复制开始前系统时间毫秒值 long start=System.currentTimeMillis(); //文 ...

随机推荐

  1. Laravel 的 Homestead 开发环境部署

    ---恢复内容开始--- Laravel 努力在整个PHP开发过程中提供令人愉快的开发体验,当然也包括本地的开发环境. 首先明白以下几个概念 VirtualBox -- Oracle 公司的虚拟机软件 ...

  2. supervisor开机自动启动脚本+redis+MySQL+tomcat+nginx进程自动重启配置

    [root@mongodb-host supervisord]# cat mongo.conf [program:mongo]command=/usr/local/mongodb/bin/mongod ...

  3. 关于枚举,enum、Enum、EnumSet、RegularEnumSet、JumboEnumSet

    Apache Commons Lang. 在版本3中,enum相关的工具就留下EnumUtils. 首先, 所有enum,都默认实现了抽象类 java.lang.Enum .所以,所有enum都具备E ...

  4. Nginx配置详细

    ######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_ ...

  5. react中实现搜索结果中关键词高亮显示

    网上看到很多js实现的关键词高亮显示,方法都是一个道理,先获取要替换的文字区域,然后在用正则匹配到关键词,并进行替换. react中实现起来似乎更简单一些. 我这里的需求是通过搜索框搜索出新闻列表,在 ...

  6. OpenGL 太阳系行星拾取例子(GL_SELECT) VS2008 + glut实现

    太阳系:Solar System 以太阳(Sun)为中心,由内到外分别是: 水星(Mercury) 金星(Venus) 地球(Earth) 火星(Mars) 木星(Jupiter) 土星(Saturn ...

  7. iOS手机淘宝加入购物车动画分析

    本文转载至 http://www.jianshu.com/p/e77e3ce8ee24 1.最终效果 仿淘宝动画 2.核心代码 _cartAnimView=[[UIImageView alloc] i ...

  8. 【死磕jeesite源码】Jeesite配置定时任务

    一.主要是注意XML文件中设置3个地方和类文件中配置 第一步配置: 第二步配置:注解扫描 第三步配置:开启任务 类中注解配置:如下 @Service 或者Component @Lazy(false) ...

  9. 深度学习之windows安装tensorflow

    1. 安装python3.5 2. 下载tensorflow-1.1.0rc2-cp35-cp35m-win_amd64.whl 3. pip install tensorflow-1.1.0rc2- ...

  10. sonar-scanner的执行流程和对ClassLoader,动态代理的使用

    最近项目上使用了sonarqube来提供静态代码检查的服务,在看sonar-scanner的源码的时候,发现sonar-scanner用来分析的jar包是从sonar的服务器上下载下来的,使用自定义的 ...