Java+Selenium+Testng自动化学习(三):典型案例总结

前言:

        本章主要介绍自动化测试UI界面时,一些典型的控件抓取。后续也会持续更新~

(一)下拉框

(二)错误截图

(三)断言

          FAQ


(一)下拉框

1. 常见下拉框类型

常见类型:

  • select下拉框
  • 非select下拉框

对select下拉框进行处理时,需要使用selenium封装的方法:Select list = new Select(locator);

具体参考:selenium webdriver + java 下拉框处理_kongc3的博客-CSDN博客

2. 举例说明

具体代码(非select下拉框):

代码实现了对如下图的下拉框进行操作。

public void sendRegTypeHandle(String type) throws IOException, InterruptedException {  

    WebElement el_down = rep.getRegSelectElement();      

    el_down.click();  

    Thread.sleep(1000);  

    rep.dr.findElement(By.xpath("//li[text()=\""+type+"\"]")).click();  

    Thread.sleep(1000);  

}  

实现方法:

  1. 拿到下拉框的元素xpath,进行click点击展开。
  2. 休眠1s
  3. 拿到下拉框选项的xpath,进行click点击选择。

下拉框选项的xpath格式://li[text()=\"需求方\"]

注意:测试时一直尝试用idclass定位,还有直接copy xpath,一直显示定位不到,后面修改xpath='//li[text()="需求方"]'后就ok了,我们不能太依赖xpath的自动生成,应该自己修改一下,才能精准定位。

(二)错误截图

1. 举例说明

具体代码:

package test.Utils;  

  

import java.io.File;  

import java.io.IOException;  

import org.apache.commons.io.FileUtils;  

import org.openqa.selenium.OutputType;  

import org.openqa.selenium.TakesScreenshot;  

import test.Page.BasePage;  

  

public class ScreenDriver {  

    public void screenDriver(String screenname) throws IOException, InterruptedException {  

//调用截图方法

        File src = ((TakesScreenshot) BasePage.dr).getScreenshotAs(OutputType.FILE); 

//拷贝截图文件到指定路径

        FileUtils.copyFile(src, new File("src\\test\\Report\\"+screenname+".png"));  

    }  

}   

实现方法:

  1. 使用driver.getScreenshotAs(OutputType.FILE)截图
  2. 使用.copyFile将截好的图片放到指定路径。

(三)断言

1. 常见断言

参考资料:自动化测试常用断言的使用方法(python+selenium) - 乐乐熊小妹 - 博客园

这里介绍以下几个断言方法:

  •         assertEqual:如两个值相等,则pass
    •         assertNotEqual:如两个值不相等,则pass
      •         assertTrue:判断bool值为True,则pass
        •         assertFalse:判断bool值为False,则Pass
          •         assertIsNone:不存在,则pass
            •         assertIsNotNone:存在,则pass
            • 2. 举例说明

具体代码:

代码实现了对登录失败的场景进行断言,判断提示信息是否与期望结果一致。

import org.openqa.selenium.By;

import org.openqa.selenium.WebElement;

import org.testng.Assert;

//断言 

WebElement alert = dr.findElement(By.xpath("/html/body/div[2]/div/span/div/div/div/span"));  

String info = alert.getText();  

System.out.println("获取的报错信息是:"+ info);  

Assert.assertEquals(info,"Incorrect verification code.","比较报错信息是否存在:");  

实现方法:

1. 使用findElement定位到Incorrect verification code.弹框

2. 使用alert.getText()获取到弹框的文字内容。

3. 使用Assert.assertEquals进行断言。

FAQ

A:导入数据异常Cannot get a text value from a numeric cell

原因:上网查了一下相关资料,发现是因为excel表里的数据如果是纯数字123456这类的话,在读取xls文件的cell的时候,cell的type会是CELL_TYPE_NUMERICl类型,然后我的代码取数据时是cell.getStringCellValue(),用Stirng类型去取它,所以才报这个错。

解决办法:在getStringCellValue()之前,需要set一下cell的type。

row.getCell(j).setCellType(Cell.CELL_TYPE_STRING);

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值