自动化测试相关使用
1.统一封装Utils
public class Utils {public static WebDriver driver=null;public static String detailUrl="hhttp://8.137.19.140:9090/blog_detail.html";public WebDriverWait wait=null;public Utils(String url){//调用driver对象driver=createDriver();driver.get(url);wait=new WebDriverWait(driver,Duration.ofSeconds(3));//显示等待,等待元素准备好}/*** 获取驱动对象*/public static WebDriver createDriver(){if(driver==null){//下载驱动WebDriverManager.chromedriver().setup();//添加配置:允许访问所以连接ChromeOptions options=new ChromeOptions();//添加谷歌浏览器配置options.addArguments("--remote-allow-origins=*");//允许访问所有连接//创建驱动对象driver=new ChromeDriver(options);//隐式等待----只等待页面元素driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));//等待3S}return driver;}/*** 屏幕截图* str:方法名/类名*/public static void ScreenShot(String str) throws IOException {SimpleDateFormat sim1=new SimpleDateFormat("yyyy-MM-dd");//年月日SimpleDateFormat sim2=new SimpleDateFormat("HHmmssSS");//时分秒String dirTime=sim1.format(System.currentTimeMillis());//文件夹名String fileTime=sim2.format(System.currentTimeMillis());//文件名//图片文件名:路径+文件名称String filename="./src/test/java/images/"+dirTime+"/"+str+"-"+fileTime+".png";File srcFile=((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);FileUtils.copyFile(srcFile,new File(filename));}/*** 销毁driver,关闭浏览器*/public static void quit(){if(driver!=null){driver.quit();}}
}
2.相关使用
LoginPage
public class LoginPage extends Utils {public static String url="http://8.137.19.140:9090/blog_login.html";public LoginPage() {super(url);}/*** 登录页面可以正常打开*/public void checkPageRight() throws IOException {//检查菜单driver.findElement(By.cssSelector("body > div.nav > a:nth-child(4)"));driver.findElement(By.cssSelector("body > div.nav > a:nth-child(5)"));//检查登录框driver.findElement(By.cssSelector("#username"));driver.findElement(By.cssSelector("#password"));driver.findElement(By.cssSelector("#submit"));ScreenShot(Thread.currentThread().getStackTrace()[1].getMethodName());}/*** 成功登录--正确账号密码*/public void LoginSuc(){//先清空driver.findElement(By.cssSelector("#username")).clear();driver.findElement(By.cssSelector("#password")).clear();//检查登录框driver.findElement(By.cssSelector("#username")).sendKeys("zhangsan");driver.findElement(By.cssSelector("#password")).sendKeys("123456");driver.findElement(By.cssSelector("#submit")).click();//登陆成功会进入列表页,以注销差别为例driver.findElement(By.cssSelector("body > div.nav > a:nth-child(6)"));}/*** 登录异常* --用户名、密码各为空或不为空* --用户名、密码各为错货正确* 。。。。。。。。。。。。*/public void LoginFail(){driver.findElement(By.cssSelector("#username")).sendKeys("zhangsan");driver.findElement(By.cssSelector("#password")).sendKeys("56");driver.findElement(By.cssSelector("#submit")).click();//处理警告弹窗(先等待弹窗出现)wait.until(ExpectedConditions.alertIsPresent());Alert alert=driver.switchTo().alert();//切换到弹窗alert.accept();}
}
ListPage
public class ListPage extends Utils {public static String url="http://8.137.19.140:9090/blog_list.html";public ListPage(){super(url);}/*** 检查博客列表表页——三个模块(菜单模块、个人信息、博客列表),展示博客列表**/public void checkBloglIST() throws InterruptedException {//检查是否存在,同时获取相应文本信息//博客标题String titile=driver.findElement(By.cssSelector("body > div.container > div.right > div:nth-child(1) > div.title")).getText();//博客发布时间String pushTime= driver.findElement(By.cssSelector("body > div.container > div.right > div:nth-child(1) > div.date")).getText();//博客内容String content= driver.findElement(By.cssSelector("body > div.container > div.right > div:nth-child(1) > div.desc")).getText();//“查看全文”按钮String button=driver.findElement(By.cssSelector("body > div.container > div.right > div:nth-child(1) > a")).getText();//校验文本assert !titile.isEmpty();//断言assert !pushTime.isEmpty();assert !content.isEmpty();assert button.equals("查看全文>>");//点击查看按钮driver.findElement(By.cssSelector("body > div.container > div.right > div:nth-child(1) > a")).click();Thread.sleep(3000);String jump_title=driver.findElement(By.cssSelector("body > div.container > div.right > div > div.title")).getText();assert jump_title.equals(titile);detailUrl=driver.getCurrentUrl();}
}
EditPage
public class EditPage extends Utils {public static String url="http://8.137.19.140:9090/blog_edit.html";public EditPage() {super(url);}/*** 发布博客*/public void editSuc() throws InterruptedException {//s输入标题(动态生成)//时分秒SimpleDateFormat sim=new SimpleDateFormat("HHmmssSS");String titleTime=sim.format(System.currentTimeMillis());String titleBefore="自动创建博客"+titleTime;driver.findElement(By.cssSelector("#title")).sendKeys(titleBefore);Thread.sleep(3000);WebElement ele=driver.findElement(By.cssSelector("#editor > div.CodeMirror.cm-s-default.CodeMirror-wrap > div.CodeMirror-scroll > div.CodeMirror-sizer > div > div > div > div.CodeMirror-code > div > div.CodeMirror-activeline-background.CodeMirror-linebackground"));
// new Actions(driver).doubleClick(ele).sendKeys(Keys.DELETE).perform();new Actions(driver).click(ele).sendKeys("自动化输入").perform();driver.findElement(By.cssSelector("#submit")).click();Thread.sleep(3000);driver.findElement(By.cssSelector("#submit")).click();List<WebElement> blogs=driver.findElements(By.cssSelector("body > div.container > div.right > div"));System.out.println(blogs.size());String titleAfert= driver.findElement(By.cssSelector("body > div.container > div.right > div:nth-child("+blogs.size()+") > div.title")).getText();System.out.println(titleAfert+" "+titleBefore);assert titleAfert.equals(titleBefore);}/*** 异常发布*/
}
DetailPage
public class DetailPage extends Utils {public static String url=detailUrl;public DetailPage() {super(url);}/*** 校验页面加载成功*/public void checkPage(){driver.findElement(By.cssSelector("body > div.container > div.right > div > div.title"));driver.findElement(By.cssSelector("body > div.container > div.right > div > div.date"));//内容//子元素——动态元素---》解决办法父标签不变
// driver.findElement(By.cssSelector("#detail > p"));driver.findElement(By.cssSelector("#detail"));driver.findElement(By.cssSelector("body > div.container > div.right > div > div.operating > button:nth-child(1)"));driver.findElement(By.cssSelector("body > div.container > div.right > div > div.operating > button:nth-child(2)"));}/*** 测试编辑功能*/public void checkDetailEdit() throws InterruptedException {//更新之前标题String titleBefor= driver.findElement(By.cssSelector("body > div.container > div.right > div > div.title")).getText();driver.findElement(By.cssSelector("body > div.container > div.right > div > div.operating > button:nth-child(1)")).click();Thread.sleep(2000);driver.findElement(By.cssSelector("#title")).clear();Thread.sleep(3000);driver.findElement(By.cssSelector("#title")).sendKeys("自动化测试更新内容");Thread.sleep(3000);driver.findElement(By.cssSelector("#submit")).click();String titltAfter=driver.findElement(By.cssSelector("body > div.container > div.right > div:nth-child(4) > div.title")).getText();assert !titltAfter.equals(titleBefor);System.out.println(titltAfter);System.out.println(titleBefor);}/*** 测试删除功能*/public void checkDetailDel(){driver.get(url);//跳转到详情页driver.findElement(By.cssSelector("body > div.container > div.right > div > div.operating > button:nth-child(2)")).click();//等待弹窗出现wait.until(ExpectedConditions.alertIsPresent());//切换到弹窗Alert alert=driver.switchTo().alert();//取消弹窗alert.dismiss();//删除driver.findElement(By.cssSelector("body > div.container > div.right > div > div.operating > button:nth-child(2)")).click();//等待弹窗出现wait.until(ExpectedConditions.alertIsPresent());//切换到弹窗alert=driver.switchTo().alert();alert.accept();}
}
assert断言
-ea -Dfile.encoding=UTF-8