• Selenium2.0+TestNG+Ant+Jenkins自动化测试浅尝


    当前常用自动化测试工具

    • Web自动化测试工具:QTP 、selenium等
    • 性能自动化测试工具:loadrunner、jmeter等
    • 接口自动化测试工具:SoapUI、postman等
    • 手机自动化测试工具:robotium、appium等

    自动化脚本录制

    Selenium 1.0包括:selenium IDE、selenium Grid、selenium RC三部分。

    Selenium IDE 是嵌入到Firefox浏览器中的一个插件,实现简单的浏览器操作的录制与回放功能
    IDE录制的脚本可以可以转换成多种语言,从而帮助我们快速的开发脚本。

    录制界面

    导出脚本

    Selenium2.0+TestNG+Ant+Jenkins自动化测试框架简介

    • Selenium2.0 = Selenium1.0 + WebDriver
    • TestNG是一个开源自动化测试框架,灵感来源于Junit,比Junit更强大
    • ANT使用XML 文件来实现管理脚本的功能。默认的文件是build.xml
    • Jenkins持续集成,结合Ant自动化构建,定时运行,发送测试报告邮件等
    • Xslt美化Testng测试报告

    环境搭建

    • 第一步 安装JDK
    • 第二步 安装Eclipse
    • 第三步 在Eclipse中安装TestNG(http://beust.com/eclipse)
    • 第四步 安装Ant(结合xslt美化测试结果,运行testng.xml,可选择性安装)
    • 第五步 安装Jenkins
    • 注意:谷歌驱动版本要和谷歌版本对应
    • v2.29 v56-58
    • v2.24 v52-54

    TestNG安装

    Eclipse Help ->Install New Software ,Add"http://beust.com/eclipse"

     

    Ant安装

    1. 官方主页 http://ant.apache.org下载新版的ant
    2. 配置环境变量:如:PATH:%ANT_HOME%in
    3. 验证ant是否成功安装:开始->运行->cmd -> ant
    4. 如果出现如下内容,说明安装成功:Buildfile: build.xml does not exist!

    Jenkins配置

    元素定位

    定位方法
    driver.findElement(By.id(“id的值”));
    driver.findElement(By.name(“name的值”));
    driver.findElement(By.linkText(“链接的全部文字”));
    driver.findElement(By.partialLinkText(“链接的部分文字”));
    driver.findElement(By.cssSelector(“css表达式”));
    driver.findElement(By.xpath(“xpath表达式”));
    driver.findElement(By.className(“class属性”));
    driver.findElement(By.tagName(“标签名称”));

    元素常用操作

    click();
    sendkeys(String value);
    clear();
    getText();
    getAttribute();

    driver.get(String url) //浏览器跳转
    driver.manage().window().maximize(); // 浏览器最大化 driver.navigate().to("http://www.baidu.com"); //浏览器跳转
    driver.navigate().refresh(); // 刷新浏览器
    driver.navigate().back(); // 浏览器后退
    driver.navigate().forward(); // 浏览器前进
    driver.quit(); // 浏览器退出

    操作弹出框

    Alert , Confirm,Prompt弹出框
    driver.switchTo().alert().accept(); //点击确定
    driver.switchTo().alert().dismiss(); //点击取消
    driver.switchTo().alert().sendKeys();

    操作windows弹出框
    借助autoIt


    滚动到顶
    ((JavascriptExecutor)driver).executeScript("document.documentElement.scrollTop=0");
    滚动到底
    ((JavascriptExecutor)driver).executeScript("document.documentElement.scrollTop=10000");

    模拟鼠标、键盘操作(Action类)

    Actions action = new Actions(driver);
    action.click(WebElement); //模拟鼠标点击
    action.contextClick(WebElement); //模拟右键点击
    action.doubleClick(WebElement); //模拟鼠标双击
    action.moveToElement(WebElement); //鼠标移动到元素
    actions.dragAndDrop(elementsource, elementtarget).perform();


    action.sendKeys(); //模拟键盘输入
    action.sendKeys(Keys.ENTER).perform(); //模拟键盘回车
    action.sendKeys(Keys.CONTROL+"a").perform(); //使用ctrl+a全选

    等待元素加载

    强制等待
    Thread.sleep();

    隐式等待
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    总共等待10秒, 如果10秒后,元素还不存在,就会抛出异常  org.openqa.selenium.NoSuchElementException

    显式等待
    new WebDriverWait(chrome, 15).until(
    ExpectedConditions.presenceOfElementLocated(By.cssSelector("css locator"))
    );    

    处理Iframe中元素

    dr.switchTo().frame("frameA"); // 进入 id 叫frameA 的 iframe
    dr.switchTo().defaultContent(); // 回到主窗口

    切换窗口

    public void switchToWindow(String title) {
    try {
    String currentHandle = driver.getWindowHandle(); //返回当前的浏览器的窗口句柄
    Set<String> handles = driver.getWindowHandles(); //返回当前的浏览器的所有窗口句柄
    for (String handle : handles){
    if(handle.equals(currentHandle)){
    continue;
    }else{
    driver.switchTo().window(handle);
    if (driver.getTitle().contains(title)){ break; }
    else{ continue; }
    }
    }
    } catch (NoSuchWindowException e) {
    System.out.println("没有找到窗口!");
    }
    }

    常见异常及解决方法

    NoSuchElementException:检查页面元素的定位表达式是否正确,或尝试其他定位方式;查看页面是否加载延迟,设置等待时间;

    NoSuchFrameException :检查元素是否frame里,是否已切换到元素的frame下,或切换回default content

    ElementNotVisibleException:检查元素是否存在不可见属性的元素,可借助Javascript实现元素操作;检查是否操作速度过快,页面没加载出来

    自动化测试结果的生成与美化

  • 相关阅读:
    初学mongodb笔记
    git学习【转载】
    json序列化与反序列化
    ES6函数比对ES5函数
    前端js脚本与防止js脚本
    js函数整合队列顺序执行插件
    padding-使用必记
    css小技巧
    三分钟教会你开密码箱
    百度地图Marker优化方案
  • 原文地址:https://www.cnblogs.com/gqhwk/p/7273225.html
Copyright © 2020-2023  润新知