【软件测试】selenium初级篇

本文详细介绍了自动化测试中的单元测试、接口自动化、Selenium框架的定义、特点、WebDriverAPI的定位元素方法(CSS选择器和XPath)、操作测试对象、隐式等待、浏览器操作以及截图等关键技术。
摘要由CSDN通过智能技术生成

一.什么是自动化测试

自动化测试相当于将人工测试手段进行转换,让代码去执行

自动化测试分类

  • 单元测试:最大的投入应该放在单元测试,单元测试的频率也是最高的,在java中我们用的单元测试框架为Junit,在另一篇博客有介绍
  • 接口自动化:接口测试就是API测试,执行起来更稳定,常见的接口自动化测试工具有,RobotFramework,JMeter,SoapUI,TestNG+HttpClient,Postman等。
  • UI自动化:虽然我们应该尽量多做API层的自动化测试,但是UI层的自动化测试更加贴近用户软件系统的事迹业务

二.selenium介绍

1.定义

selenium是web应用中基于UI的自动化测试框架

2.特点

支持各种浏览器,支持各种平台,支持各种语言(Python,Java,C#,JS),有丰富的api

3.原理

在这里插入图片描述

三.webdriver API

1.定位元素

(1)CSS选择语法

可以按id选择,按类选择,按标签选择,后代选择器:父级选择器 子级选择器进行选择

id选择:

        WebDriver webDriver=new ChromeDriver();
        //打开百度首页
        webDriver.get("http://www.baidu.com/");
        //按id查找
        WebElement element=webDriver.findElement(By.cssSelector("#kw"));

类选择:

        WebDriver webDriver=new ChromeDriver();
        //打开百度首页
        webDriver.get("http://www.baidu.com/");
        //按类查找
        WebElement element= webDriver.findElement(By.cssSelector(".s_ipt"));
        element.sendKeys("测试");

标签选择:

        WebDriver webDriver=new ChromeDriver();
        webDriver.get("http://www.baidu.com/");
        List<WebElement> elements=webDriver.findElements(By.tagName("input"));
        for(WebElement elemnet:elements){
            System.out.println(elemnet.getText());
        }

这里定位到的element可能不止一个,因此用数组接收

后代选择:这里指的就是父级选择器 子级选择器

        WebDriver webDriver=new ChromeDriver();
        webDriver.get("http://www.baidu.com/");
        webDriver.findElement(By.cssSelector("div#s-hotsearch-wrapper .c-icon"));

注意

如果代码出现问题,我们可以检查一下Chrome的配置,将代码修改为如下

        ChromeOptions options = new ChromeOptions();
        //允许所有请求
        options.addArguments("--remote-allow-origins=*");
        WebDriver webDriver=new ChromeDriver(options);

(2)XPath选择定位

XPath 是一种在XML 文档中定位元素的语言。因为HTML 可以看做XML 的一种实现,所以selenium 用户可以使用这种强大语言在web 应用中定位元素。

如何找到Xpath:

在这里插入图片描述

        WebDriver webDriver=new ChromeDriver();
        webDriver.get("http://www.baidu.com/");
        WebElement element=webDriver.findElement(By.xpath("//*[@id=\"kw\"]"));
        element.sendKeys("测试");

2.操作测试对象

定位只是第一步,定位之后需要对这个元素进行操作。是鼠标点击还是键盘输入,或者清除元素的内容,或者提交表单等

介绍几个常用的操作测试对象的方法

  • click 点击对象

  • send_keys 在对象上模拟键盘输入

  • clear 清除对象输入的文本内容

  • submit 提交

    如果点击的元素放在form标签中,此时click和submit一样

    如果非form标签,则代码会报错

  • getAttribute 获得属性值

  • text 获取元素文本

3.添加等待

(1)sleep强制等待

sleep(3000);

(2)隐式等待

隐式等待更有优势,如果在设定时间之内获取到了元素,则会执行下面代码,不会继续等待;如果没找到,则进行报错

 webDriver.manage().timeouts().implicitlyWait(3,TimeUnit.SECONDS);

4.打印信息

(1)打印title

(2)打印url

        WebDriver webDriver=new ChromeDriver();
        webDriver.get("http://www.baidu.com/");
        System.out.println(webDriver.getTitle());
        System.out.println(webDriver.getCurrentUrl());

5.浏览器操作

(1)浏览器前进

webDriver.navigate.forward();

(2)浏览器后退

webDriver.navigate.back();

(3)浏览器最大化

  webDriver.manage().window().fullscreen();

(4)设置浏览器宽和高

     webDriver.manage().window().setSize(new Dimension(80,60));

(5)浏览器滚动条操作

#将浏览器滚动条滑到最顶端

document.documentElement.scrollTop=0

#将浏览器滚动条滑到最底端

document.documentElement.scrollTop=10000

#将浏览器滚动条滑到最底端, 示例

 //强制类型转换为js进行浏览器滚动
        ((JavascriptExecutor)webDriver).executeScript("document.documentElement.scrollTop=10000");

(6)关闭浏览器

quit和close

quit关闭了整个浏览器,close只是关闭了当前的页面

quit清空缓存,close不会清空缓存

webDriver.close();

(7)鼠标操作

       //鼠标右击
        Actions actions=new Actions(webDriver);
        actions.moveToElement(webElement).contextClick().perform();

contextClick 右击

doubleClick 双击

dragAndDrop 拖动

moveToElement 移动

(8)截图操作

      File file=((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE);
      FileUtils.copyFile(file,new File("路径"));

tClick 右击

doubleClick 双击

dragAndDrop 拖动

moveToElement 移动

(8)截图操作

      File file=((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE);
      FileUtils.copyFile(file,new File("路径"));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值