当前位置: 首页 > news >正文

贵阳网站建设是什么网页制作素材免费网站

贵阳网站建设是什么,网页制作素材免费网站,做网站宣传的公司,站长工具seo综合查询问题文章目录前言一、什么是自动化测试#xff1f;一个简单的自动化实例二、自动化测试的分类1.接口自动化测试2.UI自动化测试#xff08;界面测试#xff09;移动端自动化测试web端自动化测试#xff08;主要学习#xff09;三、selenium工具1.为什么选择selenium作为web自动… 文章目录前言一、什么是自动化测试一个简单的自动化实例二、自动化测试的分类1.接口自动化测试2.UI自动化测试界面测试移动端自动化测试web端自动化测试主要学习三、selenium工具1.为什么选择selenium作为web自动化测试工具2.环境部署3.什么是驱动4.selenium的常用方法基本方法如何处理弹窗如何处理选择框执行脚本文件上传无头模式四、JUnit1.注解2.断言3.执行顺序五、测试套件前言 自动化测试有效的减少人力的投入同时提高了测试的质量和效率这里记录了什么是自动化、自动化测试的分类、selenium工具的使用等。 一、什么是自动化测试 通过自动化测试可以有效的减少人力的投入同时提高了测试的质量和效率。例如回归测试的时候由于版本越来越多仅仅是人工测试是不现实的所以需要使用自动化测试。 一个简单的自动化实例 1创建驱动实例创建会话 2访问网站 3查找元素 4操作元素 5结束会话。 代码如下示例 ChromeDriver chromeDriver new ChromeDriver();Thread.sleep(3000);//在浏览器中输入B站的网址访问B站首页chromeDriver.get(https://www.bilibili.com);Thread.sleep(3000);//找到B站首页输入框元素并输入天官赐福chromeDriver.findElement(By.cssSelector(.nav-search-input)).sendKeys(天官赐福);Thread.sleep(3000);//并点击查询chromeDriver.findElement(By.cssSelector(.nav-search-btn)).click();Thread.sleep(3000);//会话结束chromeDriver.quit();二、自动化测试的分类 1.接口自动化测试 2.UI自动化测试界面测试 移动端自动化测试 web端自动化测试主要学习 使用selenium工具来进行web端自动化测试。 三、selenium工具 1.为什么选择selenium作为web自动化测试工具 1开源免费 2支持多浏览器 3支持多系统 4支持多语言 5selenium包提供了很多可供测试使用的API。 2.环境部署 如果想要使用selenium实施web自动化测试需要的环境是 1如果是Chrome浏览器则下载ChromeDriver 2selenium工具包 3如果语言选择的是java则java版本最低要求8。 3.什么是驱动 人工测试的情况下人来打开浏览器那么驱动就是人力自动化来说代码是不能直接打开浏览器需要借助驱动程序才能打开浏览器。 4.selenium的常用方法 基本方法 1查找页面元素findElement()、findElements() 参数By类提供通过什么方式来查找元素 返回值List 2元素的定位         1选择器selector               基础选择器               复合选择器         功能选择页面的指定元素。 2xpath的语法              层级子集/、跳级//              属性              函数contains() 自动化里要求元素的定位要唯一但是手动在页面复制selector或者xpath元素不一定是唯一的需要自己进行手动修改到唯一。 3输入文本sendKeys(); 4点击click(); ChromeDriver driver new ChromeDriver();//1.获取测试的网页地址driver.get(http://www.bilibili.com);//2.通过选择器进行选择 哔哩哔哩 的搜索框 并输入 关键词 自动化测试driver.findElement(By.cssSelector(.nav-search-input)).sendKeys(自动化测试);//3.获取搜索的点击按钮并点击driver.findElement(By.cssSelector(.nav-search-btn)).click();//4.搜索完成后关闭资源driver.quit();5提交submit();通过回车键提交仅适用于表单元素 driver.findElement(By.cssSelector(.nav-search-btn)).submit();注不推荐使用submit因为submit仅适用于表单 6清除clear() driver.findElement(By.cssSelector(#kw)).clear();7获取文本String getText(); String tmp driver.findElement(By.xpath(//*[id\hotsearch-content-wrapper\]/li[1])).getText();8获取属性值getAttribute();          属性对应的值。 String str driver.findElement(By.cssSelector(#su)).getAttribute(value);9获取页面标题getTitle();          获取页面URL:getCurrentUrl(); driver.findElement(By.cssSelector(#kw)).sendKeys(软件测试); driver.findElement(By.cssSelector(#su)).click(); System.out.println(driver.getTitle()); System.out.println(driver.getCurrentUrl());10窗口 driver.manage().window() 1窗口最大化maximize(); 2窗口最小化minimize(); 3全屏fullscreen(); 4手动设置大小setSize(new Dimension(width,height)); //窗口最大化driver.manage().window().maximize();//窗口最小化driver.manage().window().minimize();//窗口全屏driver.manage().window().fullscreen();//手动设置窗口大小driver.manage().window().setSize(new Dimension(1024,1024));5窗口的切换当浏览器每打开一个标签页面时会自动的给每个标签进行标识句柄获取所有标签的句柄getWindowHandles() 获取当前页面的句柄getWindowHandle(); 窗口的切换switchTo().window(handle); driver.get(https://www.baidu.com);//找到百度页面的 图片 并点击进其页面driver.findElement(By.cssSelector(#s-top-left a:nth-child(6))).click();//此时会有两个页面//获取所有页面的句柄SetString handles driver.getWindowHandles();//获取当前页面的句柄String handle driver.getWindowHandle();//实现窗口的切换for(String s : handles) {//切换到图片页面if(!s.equals(handle)) {driver.switchTo().window(s);}}//测试是否切换成功driver.findElement(By.cssSelector(#wrapper_head_box div div div div div.s_nav a img));driver.quit();11屏幕截图 X getScreenshotAs(OutputType.X); driver.get(https://www.baidu.com);driver.findElement(By.cssSelector(#kw)).sendKeys(敖瑞鹏);driver.findElement(By.cssSelector(#su)).click();//查看是否到敖瑞鹏页面//由于代码执行过快页面还未渲染所以会出现找不到改元素的错误使用截图保存当时现场情况 // //给页面一些渲染时间 // Thread.sleep(3000);//屏幕截图保存现场File srcfile driver.getScreenshotAs(OutputType.FILE);//把屏幕截图保存到指定文件路径下FileUtils.copyFile(srcfile,new File(./src/test/java/com/autotest0304/screen.png));driver.findElement(By.cssSelector(#\\34 div div h3 a em));driver.quit();12等待 1强制等待程序阻塞进行Thread.sleep(); 2隐式等待隐式等待会作用于driver的整个生命周期。 //添加隐式等待,会作用于driver的整个生命周期//隐式等待会一直轮询判断元素是否存在如果不存在就在等待设置好的时间里不断的进行轮询直到元素能够被找到driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));3显示等待作用于某一条。 //添加显示等待new WebDriverWait(driver,Duration.ofSeconds(5)).until(driver-driver.findElement(By.cssSelector(#\\34 div div h3 a em)));4流畅等待 13浏览器导航 1浏览器的前进 driver.navigate().forward(); 2浏览器的后退 driver.navigate().back(); 3浏览器的刷新 driver.navigate().refresh(); //获取到百度搜索页面//driver.get(https://www.baidu.com);driver.navigate().to(https://www.baidu.com);//浏览器回退driver.navigate().back();//浏览器前进driver.navigate().forward();//浏览器刷新driver.navigate().refresh();14弹窗 1警告弹窗 2确认弹窗 3提示弹窗 如何处理弹窗 步骤1.将driver对象作用到弹窗上切换带弹窗 Alert alert driver.switchTo.alert(); 2.选择确认/取消提示弹窗输入文本 确认alert.accept(); 取消alert.dismiss(); 输入文本sendKeys();在页面上看不见弹窗中输入文本的效果但实际是输入了的 注意 虽然警告弹窗只有确认按钮但是accept和dismiss都能处理 虽然警告弹窗和确认弹窗没有输入文本的地方但如果要执行也不会报错。 //切换到弹窗进行弹窗处理Alert alert driver.switchTo().alert();//1.弹窗输入文本alert.sendKeys(弹窗输入文本);//2.点击确认alert.accept();//3.点击取消alert.dismiss();如何处理选择框 选项的选择方式 1.根据文本来选择 2.根据属性值来选择 3.根据序号来选择 步骤 1.创建选择框对象 Select select new Select(WebElement); 2.根据文本/属性值/序号选择 select.selectByVisibleText(); select.selectByValue(); select.selectByIndex(); WebElement element driver.findElement(By.cssSelector(body table tbody tr:nth-child(3) td:nth-child(2) select:nth-child(1)));//先创建选择框对象Select select new Select(element);Thread.sleep(3000);//1.根据文本来选择select.selectByVisibleText(1992);//2.根据属性值来选择--value的值//select.selectByValue();//3.根据序号来选择--序号从0开始//select.selectByIndex(1);Thread.sleep(3000);执行脚本 executeScript() //执行js命令让页面置顶或置低//置低driver.executeScript(document.documentElement.scrollTop500);//置顶driver.executeScript(document.documentElement.scrollTop0);文件上传 driver.findElement(By.cssSelector()).sendKeys(文件路径文件);无头模式 ChromeOptions options new ChromeOptions();options.addArguments(-headless);ChromeDriver driver new ChromeDriver(options);driver.get(https://www.baidu.com/);driver.findElement(By.cssSelector(#kw)).sendKeys(山河令);driver.findElement(By.cssSelector(#su)).click();driver.close();四、JUnit 1.注解 1Test 表示方法是测试方法执行当前这个类时会自动的执行该类下所有带Test注解的用例。 2BeforeEach 当前的方法需要在每个用例执行之前都执行一次。 3BeforeAll 当前的方法需要在当前类下所有用例之前执行一次被该注解修饰的方法必须为静态方法。 4AfterEach 当前的方法需要在每个用例执行之后都执行一次。 5AfterAll 当前的方法在当前类下所有的用例执行之后执行一次被该注解修饰的方法必须为静态方法。 public class JunitTest {BeforeEachpublic void first() {System.out.println(head);}BeforeAllpublic static void beforeAll() {System.out.println(beforeAll);}Testpublic void Second() {System.out.println(bbb);}Testpublic void third() {System.out.println(ccc);}AfterEachpublic void last() {System.out.println(last);}AfterAllpublic static void afterAll() {System.out.println(afterAll);} }2.断言 1断言匹配/不匹配 Assertions.assertEquals(); Assertions.assertNotEquals(); 2断言为真/假 Assertions.assertTrue(); Assertions.assertFalse(); 3断言结果为空/不为空 Assertions.assertNull(); Assertions.assertNotNull(); 3.执行顺序 1通过order注解来排序 不加order注解其执行顺序是无序的。 使用order注解设置其执行顺序。 注这里的Test不能去掉。 2参数化方法 尽可能的通过一个用例多组参数来模拟用户的行为。 在使用参数化注解之前需要先声明该方法为参数化方法ParameterizedTest 单参数 ValueSource() 支持的数据类型有short、byte、int、long、float、double、char、boolean、java。lang.String、java.lang.Class。 //单参数ParameterizedTestValueSource(strings {aaa,bbb,ccc})public void singleParameter(String name) {System.out.println(name);}多参数 CsvSource() //多参数ParameterizedTestCsvSource({aaa,100,bbb,30,ccc,20})public void Parameters(String name,int age) {System.out.println(姓名name 年龄age);}CsvFileSource() //多参数--从第三方CSV文件读取数据源ParameterizedTestCsvFileSource(files D:\\Book\\csv.csv)public void parametersByFile(String name,int age) {System.out.println(姓名name;年龄age);}动态方法 MethordSource() //动态方法ParameterizedTestMethodSource(methodeParameter)public void dynamicParameter(String name,int age) {System.out.println(姓名name;年龄age);}static StreamArguments methodeParameter() throws InterruptedException {String[] arr new String[5];for (int i 0; i arr.length; i) {Thread.sleep(1000);arr[i] System.currentTimeMillis();}return Stream.of(Arguments.arguments(arr[0],10),Arguments.arguments(arr[1],10),Arguments.arguments(arr[2],10),Arguments.arguments(arr[3],10),Arguments.arguments(arr[4],10));}注使用参数化注解的方法就不能再用Test注解。 五、测试套件 1.指定类名来运行所有的用例 Suite SelectClasses() 想要运行的用例必须要被Test注解除参数化的用例 2.指定包名来运行包下所有的用例 Suite SelectPackages() 如果使用包名来指定运行的范围那么该包下来所有的测试类的命名需要以Test/Tests结尾。
http://www.hkea.cn/news/14289105/

相关文章:

  • 注册安全工程师建设工程网站濮阳做网站的公司有哪些
  • ae模板免费下载网站wordpress 添加按钮
  • 东莞网站seo推广优化开拓网站建设公司
  • 网站策划书注意事项高端网站建设 杭州
  • 吉林城市建设学校网站班级网页模板html源码
  • 电商网站开发视频网络推广软件全邀zjkwlgs
  • 南京建设网站公司网站最近的热点新闻
  • 做美团网站怎么做word做网站
  • 专业做淘宝网站公司吗广州娱乐场所最新通知
  • iis建设网站项目发布网
  • 做一年的网站能赚多少钱哪个地图软件可以看清村庄
  • 现在市场网站建设怎么样个人网站制作工具箱安卓版
  • wordpress网站换空间新乡网站建设价格
  • 企业建设H5响应式网站的5大好处欢迎进入河南国安建设集团有限公司网站
  • 园林专业设计学习网站百度收录教程
  • 企业为什么建设网站樟木头镇网站建设
  • 重庆网站建设兼职深圳整合营销
  • 装修网站模板建设网官网住房和城乡厅官网
  • 吉林市建设工程档案馆网站孝感市网站建设公司
  • led营销型网站建设建设网站的技巧
  • 广东网站建设制作价格学生个人网站制作软件
  • 网站建设的目地网上书店网站建设设计的收获
  • 个体网站建设wordpress备份和恢复
  • 只做美食类目产品的网站中国铁路建设监理协会官方网站
  • 平面设计跟网站建设公司邮箱登陆
  • 建站系统下载 discuz家装公司排名前20
  • 怎样解析网站域名网站备案的原则
  • 网站接入服务单位名称做网站小编怎么样
  • 做推广哪个网站最好西安大型网站建设
  • 播州区建设局网站龙岗区