Web自动化测试Selenium 学习笔记(一)

 

一、Web自动化测试简介
自动化基础:自动化用例编写、Selenium优点及原理、自动化环境搭建
Selenium基础:常见8大元素定位(表格)、常见元素处理、下拉框元素处理、不一样窗口切换、元素进阶、元素等待
需求到框架
    需求分析-用例设计-基础脚本-登陆/购物脚本重构-封装读取配置文件-数据驱动-监听截图-代码分层-框架实现-日志收集-报告生成-持续集成
二、功能测试和自动化测试的区别
    什么是功能测试:
        知足需求找BUG
    什么是自动化测试:
        编写代码、脚本让程序自动运行;减小人工投入,提升工做效率;回归测试;系统监控
三、自动化测试流程
    常见的测试流程
        分析测试需求-选择方案-制定测试计划-环境-用例准备-编码-分析结果
四、自动化测试用例和手工测试用例的区别
    手工用例
        ID 模块 前提条件 步骤 预期结果 实际结果
    自动化测试用例 
        ID 模块 前提条件 步骤 预期结果 实际结果 
     可是两者的步骤的精度不同 
五、为何要作自动化?
    减小人力成本
    完成大量重复性工做
    提升测试效率
    保证工做的一致性,增长信任度
    完成手工不能完成的工做
六、是否适合作自动化?
    时间
    人员
    系统
    领导
七、在什么状况下作自动化?
    单元测试?    集成测试?    接口测试?    UI测试?
八、什么样的项目须要作自动化测试?
    需求变动慢
    周期长
    脚本可重复利用
九、Selenium简介
    Selenium 
十、Selenium的优点以及工做原理
    Selenium的优点:开源(彻底免费)、多浏览器 、多平台、API齐全、浏览器内运行
    Selenium的工做原理
        首先它是client即脚本,脚本最开始会启动生成一个driver,而后会启动生成一个Server即浏览器,把咱们的浏览器绑定在一个端口上,这个时候脚本咱们就能够经过发送一些session也就是发送一些请求到Server,而后让他执行一些事情,把这个请求发送到浏览器的时候,浏览器会自动解析client发送过来的请求,解析完以后会进行相应的操做,执行完以后会根据执行的结果,把这个东西返回给咱们的脚本,若是成功就响应成功了,失败就失败了,返回到客户端,就能看到一个执行结果了
十一、常见浏览器的启动
    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();
十二、元素定位
    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");
                }
            }
        }
    常见的自动化框架:关键字驱动、数据驱动、混合驱动
1三、经常使用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()
    特殊操做讲解
        报错时截屏保存
        模拟鼠标右键操做
        鼠标悬浮
        上传文件
        日期控件处理
        浏览器滚动条操做
1四、常见元素处理
    1.输入框
        sendKeys 
        clear 
        getAttribute 
    2.单选框
        click 
        clear //清楚
        isSelected //是否选中
    3.多选框
        click
        clear
        isSelected
        isEnabled //判断是不是enable状态
    4.按钮
        click 
        isEnabled //判断是不是enable状态
    5.表单
        submit
    6.上传文件
        sendKeys 
 1五、下拉框--选择元素
    下拉框定位    Select list = new Select(locator);
    下拉框操做    选择对应的元素    Text Value Index 
                         不选择对应的元素    deselectAll deselectByvalue deselectByVisibleText
                         获取选择项的值    getAllSelectdOptions() getFirstSelectedOption().getText
1六、元素进阶操做
    鼠标左击:
        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();
1七、特殊窗口切换
    Iframe处理
        switchTo()
    弹窗处理
        switchTo()
        getWindowHandles()
1八、3种等待的分类
    强制等待    Thread.sleep()
        若是调用就一直等下去
    显示等待    
        new WebDriverWait(driver,15).until(
            ExpectedConditions.presenceOfElementLocated(By.cssSelector("css locator"))
        );
        若是在规定时间内找到元素就继续操做,若是没有找到就报错
    隐式等待
        Driver.manager().timeouts.implicitlyWait(10,TimeUnit.SECONDS);
        全局的,如上10秒之内每隔多少秒去找,找到了就进行下一步
1九、自动化测试
    自动化的目的:
        减小人力成本
        完成大量重复工做
        提升测试效率
        保证工做的一致性
        完成手工不能完成的工做
20、Maven的使用
    Maven简介
        Maven是一个项目管理工具,提供了一整套完整的构建声明周期框架
    Maven的做用
        构建、文档生成、报告、依赖
2一、重构
    重构就是经过调整程序代码,但并不改变程序的功能特征,达到改善软件的质量、性能,使程序的设计模式和架构更趋合理,更容易被理解,提升软件的扩展性和维护性。

————————————————版权声明:本文为CSDN博主「Sunshicy」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处连接及本声明。原文连接:https://blog.csdn.net/sunshicy/article/details/80305750css

相关文章
相关标签/搜索