• 基于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、基础框架

     1 package testNG
     2 public class test{
     3     @Test(dataProvider="dp")//功能的主要实现结构
     4     public void mainn(String a,int b,Stringc){
     5     
     6     }
     7     @DataProvider(name="dp")//数据提供者
     8     public Object[][] dp(){
     9     Object[][] abc={ {"ab","5","bc"},{"bc","3","xx"}};
    10     }
    11     
    12     @Test(dependsOnMethods="mainn")//接着mainn之后运行
    13     public void add{
    14     
    15     }
    16 } 

    2、数据与编码分离的框架(excel,FeedTest)

    1 package testNG;
    2 public class test  extends FeedTest //extends FeedTest为追加
    3 {
    4     @Test(dataProvider="feeder")//feeder为固定用语
    5     @Souce("data/1.xls")//data为eclips内一个文件夹路径,1.xls为excel源文件,需要将它复制到eclips中此路径下才能生效。
    6     public void mainn(String a,String b,String c,int x){
    7 
    8     }    
    9 }
  • 相关阅读:
    什么是 Spring 框架?Spring框架有哪些主要模块?
    java动态代理实现与原理详细分析
    react中 函数式组件hook的使用
    JavaScript中的delete的定义以及使用
    React中ref的使用
    使用react中antd design UI库from中的getFieldsValue,getFieldValue,validateFields,resetFields,getFieldDecorator,initialvalue的用法
    使用react和axios实现的城市三级联动
    关于react中antd design pro下面src/models
    关于thisState的那些事
    react的生命周期
  • 原文地址:https://www.cnblogs.com/aland-1415/p/6551068.html
Copyright © 2020-2023  润新知