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

原文地址:https://www.cnblogs.com/zln1021/p/14484926.html