1、Web自动化测试简介
自动化基础:自动化用例编写、Selenium优势及原理、自动化环境搭建
Selenium基础:常见8大元素定位(表格)、常见元素处理、下拉框元素处理、不同窗口切换、元素进阶、元素等待
需求到框架
    需求分析-用例设计-基础脚本-登录/购物脚本重构-封装读取配置文件-数据驱动-监听截图-代码分层-框架实现-日志收集-报告生成-持续集成
2、功能测试和自动化测试的区别
    什么是功能测试:
        满足需求找BUG
    什么是自动化测试:
        编写代码、脚本让程序自动运行;减少人工投入,提高工作效率;回归测试;系统监控
3、自动化测试流程
    常见的测试流程
        分析测试需求-选择方案-制定测试计划-环境-用例准备-编码-分析结果
4、自动化测试用例和手工测试用例的区别
    手工用例
        ID 模块 前提条件 步骤 预期结果 实际结果
    自动化测试用例 
        ID 模块 前提条件 步骤 预期结果 实际结果 
     但是二者的步骤的精度不一样 
5、为什么要做自动化?
    减少人力成本
    完成大量重复性工作
    提高测试效率
    保证工作的一致性,增加信任度
    完成手工不能完成的工作
6、是否适合做自动化?
    时间
    人员
    系统
    领导
7、在什么情况下做自动化?
    单元测试?    集成测试?    接口测试?    UI测试?
8、什么样的项目需要做自动化测试?
    需求变更慢
    周期长
    脚本可重复利用
9、Selenium简介
    Selenium 
10、Selenium的优势以及工作原理
    Selenium的优势:开源(完全免费)、多浏览器 、多平台、API齐全、浏览器内运行
    Selenium的工作原理
        首先它是client即脚本,脚本最开始会启动生成一个driver,然后会启动生成一个Server即浏览器,把我们的浏览器绑定在一个端口上,这个时候脚本我们就可以通过发送一些session也就是发送一些请求到Server,然后让他执行一些事情,把这个请求发送到浏览器的时候,浏览器会自动解析client发送过来的请求,解析完之后会进行相应的操作,执行完之后会根据执行的结果,把这个东西返回给我们的脚本,如果成功就响应成功了,失败就失败了,返回到客户端,就能看到一个执行结果了
11、常见浏览器的启动
    Firefox浏览器启动(Firefox在webdriver中有自带驱动)
        import org.openqa.selenium.*;
        import org.openqa.selenium.firefox*;
        WebDriver driver;
        System.setProperty("webdriver.firefox.bin","Firefox的详细路径");  //浏览器没有装在默认路径时需要此行
        driver = new FirefoxDriver();  //实例化一个对象firefox
        String testUrl = "http://www.baidu.com";
        driver.ger(testUrl);
        driver.quit();
    chrome启动(chrome在webdriver中没有自带驱动)
        import org.openqa.selenium.*;
        import org.openqa.selenium.chrome*;
        WebDriver driver;
        System.setProperty("webdriver.chrome.driver","chrome的详细路径");  //浏览器没有装在默认路径时需要此行
        driver = new ChromeDriver();  //实例化一个对象
        String testUrl = "http://www.baidu.com";
        driver.ger(testUrl);
        driver.quit();
    IE启动
        import org.openqa.selenium.*;
        import org.openqa.selenium.InternetExplorerDriver*;
        WebDriver driver;
        System.setProperty("webdriver.ie.driver","IE的详细路径");  //浏览器没有装在默认路径时需要此行
        driver = new InternetExplorerDriver();  //实例化一个对象
        String testUrl = "http://www.baidu.com";
        driver.ger(testUrl);
        driver.quit();
12、元素定位
    10大定位方法
        By.id     By.name     By.tagName    By.className    By.linkText    By.partialLinkText    By.xpath    By.cssSelector    表格定位    层级定位
    driver.findElement(By.id("kw")).sendKeys("selenium");
    driver.findElement(By.name("wd")).sendKeys("selenium");
    driver.findElement(By.classname("s_ipt")).sendKeys("selenium");
    driver.findElement(By.xpath(".//*[@id='kw']")).sendKeys("selenium");
    driver.findElement(By.cssSelector("#kw")).sendKeys("selenium");
    有很多元素的时候它是会取第一个
    driver.findElement(By.linkText("新闻")).click();
    driver.findElement(By.partialLinkText("新")).click();
    findElement是定位单一的一个元素的方法,定位一组方法我们需要用findElements,findElements是拿到了一个数组
    表格定位:
        String str = "第二行第一列";
        WebElement Table = driver.findElement(By.tagname("table"))
        List<WebElement> rows = Table.findElements(By.tagName("tr"));
        for(WebElement row:rows){
            List<WebElement> tds= row.findElements(By.tagName("td"));
            for(WebElement td:tds){
                String value = td.getText();
                if(value.equals( str)){
                    System.out.pringln(value+"\n");
                }else{
                    System.out.pringln("error"+"\n");
                }
            }
        }
    常见的自动化框架:关键字驱动、数据驱动、混合驱动
13、常用API
    打开网址方式
        Driver.get()
        Driver.navigate.to()
    操作浏览器API
        Driver.navigate().refresh()  //刷新页面
        Driver.navigate().forward()  //前进
        Driver.navigate().back()  //后退
        Driver.getTitle()
        Driver.getCurrentUrl()  //获取当前URL
        Driver.manage().window().maximize() //窗口最大化
        Driver.quite()  //浏览器关闭,没有完全关闭,进程中仍占着
        Driver.close()  //浏览器关闭
        滚动条操作
        操作浏览器cookie
    输入框操作API
        SendKeys()
        Clear()
        getText()
        Click()
    选择框处理
        单选框
        复选框
        下拉框
    特殊窗口操作
        Iframe窗口处理
        弹窗处理
    JS操作
        Js定位
        Js单击元素
    页面元素处理
        等待加载
        根据属性获取元素值
        获取对象的css属性
        获取对象状态
            页面是否显示isdisplay()
            元素是否存在find_element
            元素是否选中isSelected()
            是否处于灰化状态isEnabled()
    特殊操作讲解
        报错时截屏保存
        模拟鼠标右键操作
        鼠标悬浮
        上传文件
        日期控件处理
        浏览器滚动条操作
14、常见元素处理
    1.输入框
        sendKeys 
        clear 
        getAttribute 
    2.单选框
        click 
        clear //清楚
        isSelected //是否选中
    3.多选框
        click
        clear
        isSelected
        isEnabled //判断是否是enable状态
    4.按钮
        click 
        isEnabled //判断是否是enable状态
    5.表单
        submit
    6.上传文件
        sendKeys 
 15、下拉框--选择元素
    下拉框定位    Select list = new Select(locator);
    下拉框操作    选择对应的元素    Text Value Index 
                         不选择对应的元素    deselectAll deselectByvalue deselectByVisibleText
                         获取选择项的值    getAllSelectdOptions() getFirstSelectedOption().getText
16、元素进阶操作
    鼠标左击:
        Actions action = new Actions(driver);
        Action.click().perform();
    鼠标右击:
        Actions action = new Actions(driver);
        Action.contextClick().perform();
    鼠标双击:
        Actions action = new Actions(driver);
        Action.doubleClick().perform();
    鼠标悬停:
        Actions action = new Actions(driver);
        Action.moveToElement().perform();
17、特殊窗口切换
    Iframe处理
        switchTo()
    弹窗处理
        switchTo()
        getWindowHandles()
18、3种等待的分类
    强制等待    Thread.sleep()
        如果调用就一直等下去
    显示等待    
        new WebDriverWait(driver,15).until(
            ExpectedConditions.presenceOfElementLocated(By.cssSelector("css locator"))
        );
        如果在规定时间内找到元素就继续操作,如果没有找到就报错
    隐式等待
        Driver.manager().timeouts.implicitlyWait(10,TimeUnit.SECONDS);
        全局的,如上10秒以内每隔多少秒去找,找到了就进行下一步
19、自动化测试
    自动化的目的:
        减少人力成本
        完成大量重复工作
        提高测试效率
        保证工作的一致性
        完成手工不能完成的工作
20、Maven的使用
    Maven简介
        Maven是一个项目管理工具,提供了一整套完整的构建声明周期框架
    Maven的作用
        构建、文档生成、报告、依赖
21、重构
    重构就是通过调整程序代码,但并不改变程序的功能特征,达到改善软件的质量、性能,使程序的设计模式和架构更趋合理,更容易被理解,提高软件的扩展性和维护性。

如果还有问题未能得到解决,搜索887934385交流群,进入后下载资料工具安装包等。最后,感谢观看!

Web自动化测试Selenium 学习笔记(一)的更多相关文章

  1. Web自动化测试 Selenium 1/3

    Selenium 名字的来源 在这里,我还想说一下关于 Selenium 名字的来源,很有意思的 : > : Selenium 的中文名为 “ 硒 ” ,是一种化学元素的名字,它 对 汞 ( M ...

  2. Selenium 学习笔记(一)

    selenium 学习整理 初学者,如果有不当得地方请指出,非常感谢. 准备事项: 1. Python 安装包 安装Python,并勾选添加环境变量. 安装完成后,打开dos窗口,输入python,看 ...

  3. Web安全测试学习笔记-DVWA-SQL注入-2

    接上一篇SQL注入的学习笔记,上一篇我通过报错信息得知后台数据库是MySQL(这个信息非常重要~),然后通过SQL注入拿到了用户表的所有行,其实我们还可以通过MySQL的特性来拿更多的信息. 1. 获 ...

  4. Selenium学习笔记(1) - 自动化测试体系与原理

    技术体系 基于代码的测试(Code-Based Testing) 基于协议的测试(Protocol-Based Testing) 基于界面的测试(GUI-Based Testing) 工作原理 基于代 ...

  5. 《Web接口开发与自动化测试》学习笔记(一)

    一.Django的入门 学习思路:先安装Django,然后在建立一个项目,接着运行这个项目,最后修改一下这个项目的数据,学习一下Django的原理之类的. 1.安装Django $pip instal ...

  6. Selenium Test 自动化测试 入门级学习笔记

    1.下载安装Firefox-selenium插件 需要下载插件可以联系,这里暂不提供下载地址. 2.集成Eclipse 需要下载jar包可以联系,这里暂不提供下载地址. 集成Eclipse非常简单,加 ...

  7. 《Web接口开发与自动化测试》学习笔记(三)

    一.认证系统 使用django本身自带的认证系统 1.登录admin后台 1. 先建立一个管理员用户: > python manage.py creatsuperuser 输入用户名.邮箱和密码 ...

  8. web 自动化测试 selenium基础到应用(目录)

    第一章   自动化测试前提及整体介绍 1-1功能测试和自动化测试的区别 1-2自动化测试流程有哪些 1-3自动化测试用例和手工用例的区别 1-4 自动化测试用例编写 1-5 selenium的优势以及 ...

  9. 《应用Yii1.1和PHP5进行敏捷Web开发》学习笔记(转)

    学习地址为: http://www.yiibook.com/book/agile_web_application_development_with_yii1.1_and_php5   1.建立应用程序 ...

随机推荐

  1. AndroidStudio配置好了so文件运行却报错 java.lang.UnsatisfiedLinkError:

    报错截图: 解决方法:在app的build.gradle 下的defaultConfig里面添加过滤即可: ndk { abiFilters 'armeabi' //兼容x86cpu架构 需要什么样的 ...

  2. 入职小白随笔之Android四大组件——广播详解(broadcast)

    Broadcast 广播机制简介 Android中的广播主要可以分为两种类型:标准广播和有序广播. 标准广播:是一种完全异步执行的广播,在广播发出之后,所有的广播接收器几乎都会在同一时刻接收到这条广播 ...

  3. memcache和redis缓存对比及我为什么选择redis

    对比结论 1. 性能上: 性能上都很出色,具体到细节,由于Redis只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis在存储小数据时比Memcached性能更高.而在100k以 ...

  4. Go语言系列:(2)go get 命令介绍

    Go语言的代码被托管于 Github.com 网站,该网站是基于 Git 代码管理工具的,很多有名的项目都在该网站托管代码.其他类似的托管网站还有 code.google.com.bitbucket. ...

  5. 【西北师大-2108Java】第十次作业成绩汇总

    [西北师大-2108Java]第十次作业成绩汇总 作业题目 面向对象程序设计(JAVA) 第12周学习指导及要求 实验目的与要求 (1)掌握Vetor.Stack.Hashtable三个类的用途及常用 ...

  6. Git 将已有项目推送到新建的远程仓库

    目录 一.需求: 二.较快捷的操作: 一.需求: 将一个本地的项目推送到一个新建的远程仓库中: 二.较快捷的操作: 1.创建一个远程仓库 以此为例:http://192.168.1.183/git/p ...

  7. Navicat定时在MySQL与MySQL数据库之间自动传输数据

    Navicat定时在MySQL与MySQL数据库之间自动传输数据 来由:  需要将表数据从一个库同步到另一个库(数据分发),之前有尝试过使用Kettle去抽数,但是数据量稍微大一点的时候太慢了...  ...

  8. 你真的会用搜索吗?—— google 搜索技巧

    鄙人用了那么多年 google ,却只会简单的空格. 虽然空格已经很强大了.google 对此做了非常多的优化,原则是让你只用最基础的输入搭配空格就能达到跟下面介绍的方法几乎一样的效果,但是还有知道一 ...

  9. 上手Neo4j

    Neo4j是什么 软件安装及常用的配置选项介绍 下载 wget https://neo4j.com/artifact.php?name=neo4j-community-3.5.3-unix.tar.g ...

  10. SSM框架之SpringMVC(1)入门程序

    SpringMVC(1) 1.三层架构和MVC 1.1. 三层架构 咱们开发服务器端程序,一般都基于两种形式,一种C/S架构程序,一种B/S架构程序 使用Java语言基本上都是开发B/S架构的程序,B ...