3_Selenium+TestNG

1 Eclipse中TestNG插件安装

  路径:Help->Install New Software,插件地址:http://beust.com/eclipse

2 新建TestNG Class

3 使用TestNG重构上节代码

package com.selenium.test;

import java.sql.Driver;
import java.util.List;
import java.util.Set;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions;
import org.testng.annotations.Test;

public class Test3 {

    WebDriver driver = null;

      @Test
      public void login1() throws InterruptedException {

            driver = new FirefoxDriver();    //启动火狐浏览器
            driver.manage().window().maximize();    //最大化浏览器
            driver.navigate().to("http://www.baidu.com/");    //导航到百度

        //登录 - 链接
        WebElement linkLogin = driver.findElement(By.xpath("//div[@id=‘u1‘]/a[text()=‘登录‘]"));
        linkLogin.click();

        //等待2秒
        Thread.sleep(3000);

        //用户名、密码 - 输入框
        WebElement textUsername = driver.findElement(By.xpath("//input[@id=‘TANGRAM__PSP_8__userName‘]"));
        textUsername.clear();
        textUsername.sendKeys("栗子测试");
        WebElement textPassword = driver.findElement(By.xpath("//input[@id=‘TANGRAM__PSP_8__password‘]"));
        textPassword.clear();
        textPassword.sendKeys("2472471982");

        //登录 - 按钮
        WebElement buttonLogin = driver.findElement(By.xpath("//input[@id=‘TANGRAM__PSP_8__submit‘]"));
        buttonLogin.click();

        //等待3秒
        Thread.sleep(3000);
      }

    @Test
    public void basicInfo1() throws InterruptedException {
        //悬停
        Actions action = new Actions(driver);
        WebElement linkMe = driver.findElement(By.xpath("//a[@id=‘s_username_top‘]/span"));
        action.moveToElement(linkMe).perform();

        //账号设置 - 链接
        WebElement linkSeniorSearch = driver.findElement(By.xpath("//div[@id=‘s_user_name_menu‘]/div/a[3]"));
        linkSeniorSearch.click();

        //账号设置 - 窗口跳转
        String firstWindowHandle = driver.getWindowHandle();    //获取第一个窗口句柄
        Set<String> towHandles = driver.getWindowHandles();
        for (String handle : towHandles) {    //遍历所有窗口句柄
            System.out.println("+++" + handle);
            driver.switchTo().window(handle);    //切换两次,切换到第二个窗口
        }

        //修改资料 - 链接
        WebElement linkModifyData = driver.findElement(By.xpath("//div[@id=‘content‘]//a[text()=‘修改资料‘]"));
        linkModifyData.click();

        //修改资料 - 窗口跳转
        Set<String> threeHandles = driver.getWindowHandles();    //获取三个窗口句柄
        threeHandles.removeAll(towHandles);        //移除原来的两个句柄
        String thirdWindowHandle = threeHandles.iterator().next();    //剩下一个句柄
        driver.switchTo().window(thirdWindowHandle);    //切换到第三个窗口

        //性别 - 单选(被看做一组)
        List<WebElement> radiosGender = driver.findElements(By.xpath("//input[@name=‘passport_sex‘]"));    //定位所有单选按钮
        radiosGender.get(1).click();    //index从0开始

        //血型 - 此下拉框非Select,只是样式像
        WebElement divBlood= driver.findElement(By.xpath("//div[@id=‘cussel1000002‘]/div"));
        divBlood.click();
        WebElement linkBlood= driver.findElement(By.xpath("//div[@id=‘cussel1000002‘]//a[text()=‘AB‘]"));
        linkBlood.click();

        //保存 - 按钮
        WebElement buttonSaveBasic = driver.findElement(By.xpath("//form[@id=‘profile‘]/child::input2"));
        buttonSaveBasic.click();
        driver.quit();
    }

}

4 使用XML文件控制TestNG代码执行顺序

<?xml version="1.0" encoding="UTF-8"?>
<!--suite:定义一个测试套件,可包含多个测试用例或测试group-->
<suite name="BaiduSuite"  thread-count="1">
    <test name="bd_updateInfo">
        <classes>
          <!-- 第一个类中需要执行的测试方法 -->>
            <class name="com.selenium.test.Test3" >
                <methods>
                    <include name="login1" />
                    <include name="basicInfo1" />
                </methods>
            </class>
            <!-- 第二个类中需要执行的测试方法 -->>
            <class name="com.selenium.test.Test4" >
                <methods>
                    <include name="login2" />
                    <include name="basicInfo2" />
                </methods>
            </class>
        </classes>
    </test>
</suite>
时间: 2024-10-13 01:05:58

3_Selenium+TestNG的相关文章

TestNG 入门教程

原文出处:http://www.cnblogs.com/TankXiao/p/3888070.html 阅读目录 TestNG介绍 在Eclipse中在线安装TestNG 在Eclipse中离线安装Testng TestNG最简单的测试 TestNG的基本注解 TestNG中如何执行测试 使用testtng.xml 文件执行 case TestNG按顺序执行Case TestNG异常测试 TestNG组测试 TestNG参数化测试 TestNG忽略测试 TestNG 依赖测试 TestNG测试结

TestNG运作报错An interanl error occurred during:&quot;Launching first&quot;

备注:我建的类名就叫做“first” 解决办法:卸载掉TestNG M2E Help-->Install new software-->What is already installed?-->Select the TestNG M2E software and click uninstall

APP接口自动化测试JAVA+TestNG(三)之HTTP接口测试实例

转载自:http://www.cnblogs.com/findyou/p/5388853.html 说明,本文为学习参考,将于一段时间后删除. 前言    前两篇普及相关基础知识后,本篇主要对举例对国家气象局接口自动化测试进行讲解(Get请求及结果断言),以达到自动化测试入门目的,除了前两篇的一些了解外,需要有一定的JAVA知识(HTTP相关). 目录 3.1 HTTP接口(GET)测试实例 3.1.1 待测接口说明 3.1.2 新建JAVA工程 1.工程目录说明 2.Common.java源码

TestNG学习-002-annotaton 注解概述及其执行顺序

此文主要讲述用 TestNG 基础的 annotation (注解)知识,及其执行的顺序,并通过一个 TestNG 简单的实例演示 annotation 的执行顺序. 希望能对初学 TestNG 测试框架的亲们有所帮助.若有不足之处,敬请大神指正,不胜感激! 言归正传,以下为 TestNG 常用的 annotation 及其释义,敬请参阅. @BeforeSuite:被此注解的方法将在所有测试运行之前运行该方法. @AfterSuite: 被此注解的方法将在所有测试运行之后运行该方法. @Bef

TestNG学习-001-基础理论知识

此 文主要讲述用 TestNG 的基础理论知识,TestNG 的特定,编写测试过程三步骤,与 JUnit4+ 的差异,以此使亲对 TestNG 测试框架能够有一个简单的认知. 希望能对初学 TestNG 测试框架的亲们有所帮助.若有不足之处,敬请大神指正,不胜感激! TestNG是什么?TestNG是一个灵感来自于 JUnit 和 NUnit 的一个设计用来简化广泛的测试需求的开源自动化测试框架,其引入了一些新的功能,使其功能更强大,而且易于使用,但是 TestNG 不是 JUnit 的扩展.它

TestNG+ExtentReports生成超漂亮的测试报告

一个优雅.漂亮的测试报告,能够给我们的测试工作带来不少的加分,而报告的模版实在是让我们这些技术人员头疼的问题,设计的实在是没有什么美感. 那么今天就给大家分享一个自动化测试中,一个超漂亮的测试报告模版. 先展示一下测试报告 那么这个报告是如何生成的呢?简简单单的几步就可以搞定! 1.环境准备 jdkidea或者eclipse都可以maven 2.具体操作     2.1创建一个maven工程     2.2在pom文件中添加 2.3配置你的testng.xml(这里只列出配置,不做仔细讲解,te

Exception in thread &quot;main&quot; java.lang.NoSuchMethodError: org.testng.TestNG.configure(Lorg/testng/CommandLineArgs;)V

TestNG运行时报以下错误: Exception in thread "main" java.lang.NoSuchMethodError: org.testng.TestNG.configure(Lorg/testng/CommandLineArgs;)V at org.testng.remote.AbstractRemoteTestNG.configure(AbstractRemoteTestNG.java:77) at org.testng.remote.RemoteTestN

TestNG 入门教程&lt;Java 入门&gt;

TestNG 入门教程 摘要:http://www.cnblogs.com/TankXiao/p/3888070.html 国庆7天假期,大部分朋友都出去旅游了,微信圈里全是晒旅游的照片, 东南亚游,欧洲游呀,真是羡慕呀. 悲惨的我只去了上海野生动物园, 在家休息,利用这段假期,把之前学过的东西都总结下. 我前段时间加班太多了,每天忙碌工作,都没精力去管自己的学习新技能的计划, 博客也没写几篇,很多想做的事情都因为工作太忙而耽搁了. 所以工作太忙了也不好,没有精力关注工作以外的事情. 最近写自动

JUnit 4 与 TestNG 对比

原文出处: 付学良的网志 原文出处2: http://www.importnew.com/16270.html -------------------------------------------- Junit 4 和 TestNG 都是 Java 方面非常流行的单元测试框架.在功能上两个框架都非常类似.到底哪个比较好?在Java项目中我们应该选择哪个框架? 下图将会对Junit 4 和 TestNG 做个功能特征的对比. 注解支持 Junit 4 和 TestNG 在注解方面的实现非常相似.