自动化测试 selenium基础

简介: 自动化测试 selenium基础

前言

我们都知道测试开发工程师的任务是根据用户需求测试用例的同时,害的开发自动化工具来减轻测试压力且提高测试的效率以及质量,这一节我们就来简单谈谈开发简单的自动化工具基础

什么是自动化测试呢?就是将我们需要做的测试交给机器去做,也就是使用代码来模拟人对于机器的行为,比如说点击动作,输入动作.....

环境配置

我们知道chrome浏览器是当前使用较多的浏览器,本期就以chrome为例来操作

首先我们需要下载一个chrome浏览器,并查看对应的版本号引入chrome浏览器的一个驱动

网址如下:

Chrome for Testing availability

下载对应的版本即可

然后将对应的chrome.exe复制到对应的路径下,并配置环境变量

总而言之就是将驱动放置到对应的chrome安装路径,将chrome安装路径加入到环境变量即可

然后加上对应的依赖

<dependency>
 <groupId>org.seleniumhq.selenium</groupId>
 <artifactId>selenium-java</artifactId>
 <version>4.0.0</version>
</dependency>

此时我们就可以开始我们的自动化之旅了

在这之前,聊一聊selenium是如何使用代码达成模拟操作的

我们先看一张图

这个图有三个角色

自动化脚本代码 web驱动 浏览器

我们通过代码生成一个http请求  请求到达驱动就生成一个http server接受请求 最后达成操作浏览器返回值的作用

测试练习

1.测试环境是否搭建完成

        WebDriver driver = new ChromeDriver();
        driver.get("http://www.baidu.com");


如果能使用chrome浏览器跳转到百度首页,就代表环境搭建成功

2.使用代码模拟搜索功能

在这之前我们需要知道常用的定位方式

1.使用css选择器定位

就和css标签定位方式是一样的

类选择器使用.  

id选择器使用#

2.使用xpath定位

xpath是从dom树结构中定位

有两种方式

一种是以绝对路径的方式(不常用)

例如: /html/body/div....

一种是以相对路径的方式

常用的是以下四种

1.相对路径 + 索引

//form/span[1]  注意这里html中索引是从1开始的

2.相对路径 + 属性

//input[@class="s_ipt"]

3.相对路径 + 通配符

//*[@]*="s_ipt"]

4.相对路径 + 文本匹配 (标签中间的文本)

a[text()="aaa"]  这里匹配的就是aaa文本所在的a标签

我们可以使用简洁的方式选中自动生成选择器以及xpath

知道了以上知识,我们就可以来实现搜索了

        WebDriver driver = new ChromeDriver();
        driver.get("http://www.baidu.com");
        WebElement element = driver.findElement(new By.ByCssSelector("#kw"));
        element.sendKeys("测试开发前景");
        driver.findElement(new By.ByCssSelector("#su")).click();
        sleep(3000);
        driver.quit();

这里我们就可以实现看到测试开发前景的搜索结果了

休眠3000秒是为了可以看到测试的结果

3.操作测试对象

注: 以下函数都是对于WebElement对象进行操作的

3.1 点击对象

使用click()函数即可

3.2 输入值

使用sendKeys()函数即可

3.3 清空文本

clear()函数即可

3.4 提交

submit()即可

3.5 获取元素文本信息

text()函数即可

3.6 获取 title/url

对WebDriver对象使用getTitle()/getCurrentUrl()方法即可

3.7 窗口最大化

使用WebDriver.manage().window().maximize()函数即可

3.8 设置浏览器的大小

webdriver.manage().window().setSize(new  Demension(width,height))

3.9 浏览器的前进后退

webdriver.navigate().back()/forward()

3.10 操作浏览器滚动条

需要将WebDriver强转成JavaScriptExcucter然后使用前端的js语法解决问题

比如

3.11 键盘事件 - 回车

只需要将找到的WebElement调用sendKeys方法传入参数Keys.ENTER即可

例如

webDriver.findElement(By.cssSelecter("#kw")).sendKeys(Keys.ENTER)

3.12 键盘事件 组合键

webDriver.findElement(By.cssSelecter("#kw")).sendKeys(Keys.CONTROL,"A");

其他的组合键和这个同理

3.13 鼠标事件

Actions action = new Action(webdriver);
//找到目标元素
WebLelment element = webdriver.findElement(By.cssSelecter("..."));
actions.moveToElement(element).contextClick().perform()
//不加上perform也可以,但是看不到效果

3.14 切换窗口

因为如果点击的是超链接或者是子窗口的元素

直接访问不到

需要定位到对应窗口,这里以新窗口为例

这里我们主要是用过句柄访问

//获取本页面句柄
String cur = webDriver.getWindowHandle();
//获取所有句柄
Set<String> handles = webDriver.getWindowHandles();
//转到新窗口的句柄
String  tmp = "";
for(String s : handles) {
{
    tmp = s;
}
webDriver.switchTo().window(tmp);

3.15 截图

将webDriver转成TakeScreenShot即可

记得引入common-io的依赖

File f = (TakeScreenShot)webDriver.getScreenstotAs(OutputType.FILE);
FileUtils.copyFile(f,new File("目的地址"));


3.16 选中复选框

使用list接受 findElement

for循环分别getAttribute("type").equals(...)

然后对应的click()即可

3.17  子网页

要选中只需要使用

webDriver.switchTo().frame("对应的frame名即可")

或者使用索引也可以 索引从1开始

相关文章
|
2天前
|
存储 JavaScript Java
《手把手教你》系列技巧篇(四十七)-java+ selenium自动化测试-判断元素是否显示(详解教程)
【5月更文挑战第11天】WebDriver 的 `isDisplayed()` 方法用于检查页面元素是否可见,如果元素存在于DOM中且可视,返回`true`,否则返回`false`。在自动化测试中,这个方法常用于验证元素是否真正显示在页面上。示例代码展示了如何使用 `isDisplayed()` 判断百度登录页面的特定错误提示文字是否出现。
11 1
|
2天前
|
JavaScript Java 测试技术
《手把手教你》系列技巧篇(四十六)-java+ selenium自动化测试-web页面定位toast-下篇(详解教程)
【5月更文挑战第10天】本文介绍了使用Java和Selenium进行Web自动化测试的实践,以安居客网站为例。最后,提到了在浏览器开发者工具中调试和观察页面元素的方法。
12 2
|
3天前
|
敏捷开发 测试技术 持续交付
深入理解自动化测试框架:以Selenium为例
【5月更文挑战第16天】 随着软件行业的迅猛发展,质量保障变得愈加重要。自动化测试作为确保软件质量的重要环节,其效率和可靠性受到了广泛关注。本文旨在深入探讨自动化测试框架的构建与优化,特别是以Selenium框架为例,分析其在实际应用中的优势、常见问题以及解决方案。通过具体案例分析,揭示如何提高自动化测试的稳定性和灵活性,从而更好地服务于敏捷开发和持续集成流程。
19 5
|
3天前
|
Web App开发 JavaScript 测试技术
《手把手教你》系列技巧篇(四十五)-java+ selenium自动化测试-web页面定位toast-上篇(详解教程)
【5月更文挑战第9天】本文介绍了在Appium中处理App自动化测试中遇到的Toast元素定位的方法。Toast在Web UI测试中也常见,通常作为轻量级反馈短暂显示。文章提供了两种定位Toast元素的技巧.
11 0
|
4天前
|
前端开发 Java 测试技术
selenium+python自动化测试--登录
selenium+python自动化测试--登录
12 2
|
4天前
|
Web App开发 缓存 前端开发
《手把手教你》系列技巧篇(四十四)-java+ selenium自动化测试-处理https 安全问题或者非信任站点-下篇(详解教程)
【5月更文挑战第8天】这篇文档介绍了如何在IE、Chrome和Firefox浏览器中处理不信任证书的问题。作者北京-宏哥分享了如何通过编程方式跳过浏览器的证书警告,直接访问不受信任的HTTPS网站。文章分为几个部分,首先简要介绍了问题背景,然后详细讲解了在Chrome浏览器中的两种方法,包括代码设计和运行效果,并给出了其他浏览器的相关信息和参考资料。最后,作者总结了处理此类问题的一些通用技巧。
16 2
|
4天前
|
数据采集 Web App开发 数据挖掘
利用Python和Selenium实现定时任务爬虫
利用Python和Selenium实现定时任务爬虫
|
4天前
|
JavaScript 前端开发 测试技术
Python Selenium基本用法
Python Selenium基本用法
38 2
|
4天前
|
Web App开发 数据采集 前端开发
基于Python的Selenium详解:从入门到实践
基于Python的Selenium详解:从入门到实践
124 0
|
2天前
|
机器学习/深度学习 Java 数据挖掘
selenium的配置与基本使用(1),2024年最新网易Python面试必问
selenium的配置与基本使用(1),2024年最新网易Python面试必问