快速入门:Java+testNG+selenium

快速入门:Java+testNG+selenium

第一章环境的配置
Java的jbk中是没有操作的浏览器的方法的api的,但是selenium中有webdrive接口,并由各浏览器的实现,所以必须条件之一就是往项目中加入selenium提供的代码,也就是jar文件。
连接:链接:https://pan.baidu.com/s/1sAImB5ryqyjX1R_vP_YWiQ
提取码:clhy
把他build到自己的项目中,就ok了 idea如何加入jar请百度
有了jar以后我们可以做的事就是如何去调用各个浏览器的驱动,根据本机浏览器的版本去下载好驱动按以下代码设置或者手动在环境变量中设置

下面是testNG来进行的登录百度账号自动化脚本,之中体现了如何运用id,linkText,定位元素的方法和代码配置驱动的环境变量,比较简单可以有一定Java基础的会很明白。

@BeforeClass
public  void  loginbaidu(){
    //把驱动应用放入本地文件
    File file =new File("D:\\driver\\chromedriver.exe");

    //运用System设置读取该文件的环境变量,也可以在电脑系统中的path直接的配置;
    System.setProperty("webdriver.chrome.driver",file.getAbsolutePath());

    //获取驱动,:也就是启动selenium的服务
    WebDriver driver = new ChromeDriver();
    try{
        //获取要访问的地址,
    driver.get("https://www.baidu.com/");

    //获取元素
    driver.findElement(By.linkText("登录")).click();

    //跳转页面时因为浏览器速度或者电脑等外部原因可以设置线程睡眠时间进行等待浏览器响应
    Thread.sleep(3000);
	
    driver.findElement(By.id("TANGRAM__PSP_10__footerULoginBtn")).click();
        Thread.sleep(3000);
	//输入密码,账号是默认有值的为了保密没有写输入账号那句,密码一定要输入但不能是我这样
    driver.findElement(By.id("TANGRAM__PSP_10__password")).sendKeys("*******");
        Thread.sleep(3000);

    driver.findElement(By.id("TANGRAM__PSP_10__submit")).click();
    }catch (Exception E){
        System.out.println("not find  element");
    }finally {
        //不论是否成功需要关闭驱动,不然多次启动或造成进程中全是浏览器exe,影响电脑性能
        driver.close();
    }
}

}

第二章XPATH定位
2.selenium进行ui自动化测试,最主要的就是精准的获取到页面中的元素,对其进行id定位和linkText文本定位上面代码中已经实现,下面说xpath定位方法;
以百度登录为列

找到百度中的登录页面div,在这里查看到,该div的id为u1此div上还有两层div,并且该div中封装的都为标签,而且登录按钮是没有id的。如何用xpath去定位呢???
别急慢慢的一层一层拨开她的衣服==!
首先定位她的div第一层div //[@id='head] //表示该html下的根目录中id为head的标签
第二层div //
[@id='head]/div[@class=‘head_wrapper’] @后面跟的是该标签下任意属性名
第三层div //
[@id=‘head]/div[@class=‘head_wrapper’] /div[@id=’ u1’]
最后一层精准定位到登录按钮
driver.findElement(By.xpath("//*[@id=‘head]/div[@class=‘head_wrapper’]/div[@id=’ u1’]/a[@name=‘tj_login’]"));
现在就可以准确定位到登录这个按钮了,但是在一般开发中,xpath是比较复杂的,一般能通过id或者其他的元素准确定位就ok,特别注意:在运用xpath的方法中最好使用相对路径来进行定位,以避免路径不精准。因为xpath路径会随着页面元素布局的改变而改变;并且不同的浏览器对xpath的实现不一样。

还有一种定位比较常用的
百度登录源码;
登录

通过contains()来模糊定位href属性包含:https://passport.baidu.com/v2/?login&
driver.findElement(By.xpath(“//a[contains(@href,‘https://passport.baidu.com/v2/?login&’)]”));

通过start-with()来模糊定位:开头包含的意思,href属性开头包含:https://passport.baidu.com/v2/?login&

driver.findElement(By.xpath(“//a[start-with(@href,‘https://passport.baidu.com/v2/?log’)]”));
第三章CSS定位
粘贴百度的页面超文本

1.指定一个 HTML的标签,然后加一个“.”符号,跟上 class 的属性值

WebElement ele = driver.findElement(By.cssSelector(“a.lb”));

使用相对ID选择器定位元素,方法如下:
2.通过id获取登录标签外的div
指定一个 HTML 标签,然后加上一个“#”符号,跟上 id 的属性值

WebElement ele = driver.findElement(By.cssSelector(“input# u1”));

第四章testing
TestNG环境配置,eclipse下载插件 :https://github.com/cbeust/testng-eclipse/

最好选用稳定版的,测试版的也可以,毕竟作为测试人员可以为咱们的工具做点贡献做好
下载后加入eclipse。
IDEA IntelliJ插件系统会自带的。
注解 描述
@BeforeSuite:所有测试方法运行前先运行被@BeforeSuite注释的方法仅运行一次。

@AfterSuite 所有测试方法运行后,运行被@AfterSuite注释的方法,仅运行一次。

@BeforeClass 类中有方法被@BeforeClass注释后,先执行该方法才能执行类中其他的方法,
注释方法仅运行一次。(思考:如果类中也有被@BeforeSuite注释呢)

@AfterClass 被@AfterClass注释的方法在当前类的第一个测试方法之后运行,注释方法仅运行一次

@BeforeTest 被@BeforeTest的方法将在testNG的xml文件标签内的类的所有测试方法运行之前运行。

@AfterTest 被@AfterTest的方法将在在testNG的xml文件在testNG的xml文件标签内的类的所有测试方法运行之后运行。
@BeforeGroups 被@BeforeGroups(“组列表”)组列表代表:一个组或多个组,在这些组中第一个测试方法运行之前不久运行;
@AfterGroups 被@BeforeGroups(“组列表”)组列表代表:一个组或多个组,在这些组中第一个测试方法运行之后不久运行;
@BeforeMethod 被@BeforeMethod(“方法名”)注释方法将在每个测试方法之前运行。
@AfterMethod 被@AfterMethod注释的方法将在每个测试方法之后运行。
@DataProvider 被@DataProvider注释标记一种方法来提供测试方法的数据。 注释方法必须返回一个Object [] [],其中每个Object []可以被分配给测试方法的参数列表。 要从该DataProvider接收数据的@Test方法需要使用与此注释名称相等的dataProvider名称。
@Factory 将一个方法标记为工厂,返回TestNG将被用作测试类的对象。 该方法必须返回Object []。
@Listeners 定义测试类上的侦听器。
@Parameters 描述如何将参数传递给@Test方法。

为更真实的看到运行的顺序
实例:
import org.testng.annotations.*;

public class MytestNG {

@BeforeSuite
public void beforeSuite() {
    System.out.println(this.getClass().getName() + " beforeSuite");
}

@AfterSuite
public void afterSuite() {
    System.out.println(this.getClass().getName() + " afterSuite");
}

@BeforeTest
public void beforeTest() {
    System.out.println(this.getClass().getName() + " beforeTest");
}

@AfterTest
public void afterTest() {
    System.out.println(this.getClass().getName() + " afterTest");
}

@BeforeClass
public void beforeClass() {
    System.out.println(this.getClass().getName() + " beforeClass");
}

@AfterClass
public void afterClass() {
    System.out.println(this.getClass().getName() + " afterClass");
}

@BeforeMethod
public void beofreMethod() {
    System.out.println(this.getClass().getName() + " beforeMethod");
}

@AfterMethod
public void afterMethod() {
    System.out.println(this.getClass().getName() + " afterMethod");
}

@Test
public void test1() {
    System.out.println(this.getClass().getName() + " test1");
}

@Test
public void test2() {
    System.out.println(this.getClass().getName() + " test2");
}

}
配置XML文件:

在这里插入图片描述

运行结果:

[TestNG] Running:
C:\Users\Lenovo\IdeaProjects\chromeTest\src\test\java\mytestng.xml
MytestNG beforeSuite
MytestNG beforeTest
MytestNG beforeClass
MytestNG beforeMethod
MytestNG test1
MytestNG afterMethod
MytestNG beforeMethod
MytestNG test2
MytestNG afterMethod
MytestNG afterClass
MytestNG afterTest
MytestNG afterSuite

===============================================
Suite1
Total tests run: 2, Failures: 0, Skips: 0

Process finished with exit code 0
现在一目了然:
第五章 selenium+testNG:
有样本但不方便展示,等有空搞一套邮箱登录自动化测试:
欢迎大神指点。
作者:不愿透露姓名的张天星啊

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程介绍你是否在寻找机会进入自动化测试领域? 你是否渴望学习selenium webdriver + Java以及最新的框架和技术进行web自动化测试? 你是否感兴趣学习Selenium如何用在你现有的项目里的? 这门课带你从Selenium搭建环境开始讲起,然后学习seleniumTestNG, logback, maven, jenkins。 我们假设学员没有任何自动化经验,来设计的这套课程。每个课题都从最基础的开始讲起。Selenium相关的该覆盖的课题都覆盖了。 例子都是来自于真实的web应用项目,帮助你理解不同的组件怎么用上自动化,这将展示给你一个行业层面的框架,增加自信心。 全网没有其他课程像这门课涵盖到如此之深的细节。 您将会学到什么 学完课程以后,你将拥有完整的Selenium Webdriver知识 你将具备从头开始设计Page Object、Page Factory、DATADRIVEN等搭建自动化框架的能力 用100多个实例对Selenium现实场景应用进行深入理解 全面了解TestNG, Maven, Jenkins, HTML报告,多浏览器并行测试 了解数据库测试和使用Selenium进行性能测试 你将彻底了解testNG框架 你从网上随便选择一个网站,都可以实现自动化,用所有可能的测试用例进行自动化测试 将提高你的编码技能,以编写最优化的自动化测试用例代码 你基本可以搞定任何Selenium面试,并能从设计阶段开始领导整个Selenium自动化项目 你应该能够使用应用程序的GUI来验证数据完整性 你将能够创建漂亮的报告来打动客户或领导 更深入地理解自动化指南和代码质量标准 会附带一个练习网站,可以用上所有可用的WebDriver功能,实现自动化 【适合人群】 软件手动测试人员想转为自动化测试的人员 自动化软件测试人员想加强专业技能的 刚毕业学生想从事软件行业 QA 组长或项目经理 【课程优势】 学完课程以后,你将拥有完整的Selenium Webdriver知识 【讲师介绍】 资质介绍: 12年以上软件测试工作经验,其中7年以上自动化测试开发经验 新书“Python3+Selenium3自动化测试项目实战”作者
Java Maven TestNG SeleniumUI自动化框架是一种基于Java语言、使用Maven作为构建工具、TestNG作为测试框架、SeleniumUI作为Web应用自动化测试工具的自动化测试框架。 - Java是一种跨平台的编程语言,被广泛应用于软件开发领域。使用Java语言可以编写可靠、高效、可扩展的自动化测试脚本。 - Maven是一个项目管理工具,通过定义项目的依赖关系和构建过程,能够自动下载和安装项目的相关依赖,简化了项目的构建和部署过程。 - TestNG是一个基于Java的测试框架,具有丰富的测试功能和灵活的配置选项,可以支持测试用例的并发执行、测试结果的报告生成等多种功能,提高了自动化测试的效率和可维护性。 - Selenium是一个Web应用自动化测试工具,通过模拟用户操作浏览器行为,可以对Web应用进行自动化测试。UI代表用户界面,Selenium可以对Web界面进行操作和验证。 Java Maven TestNG SeleniumUI自动化框架的使用可以帮助开发团队快速构建自动化测试环境,提高测试效率和质量。通过使用Maven作为构建工具,可以灵活管理项目的依赖,并提供自动化构建、部署和测试的能力。TestNG作为测试框架,提供了丰富的测试功能和灵活的配置选项,可以方便地编写和执行各种类型的测试。而SeleniumUI作为Web应用自动化测试工具,可以模拟用户操作浏览器行为,对Web界面进行自动化测试。 总之,Java Maven TestNG SeleniumUI自动化框架结合了Java语言、Maven工具、TestNG框架和SeleniumUI工具的优势,可以帮助开发团队高效地进行自动化测试,并提升项目的质量和可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值