• 基于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和equalsIgonreCase结果返回的是布尔值(truefalse);
    
      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类设置等待总时长、轮询周期

  • 相关阅读:
    怎么查看京东店铺的品牌ID
    PPT编辑的时候很卡,放映的时候不卡,咋回事?
    codevs 1702素数判定2
    codevs 2530大质数
    codevs 1488GangGang的烦恼
    codevs 2851 菜菜买气球
    hdu 5653 Bomber Man wants to bomb an Array
    poj 3661 Running
    poj 1651 Multiplication Puzzle
    hdu 2476 String Painter
  • 原文地址:https://www.cnblogs.com/Shanghai-vame/p/7280907.html
Copyright © 2020-2023  润新知