自动化测试 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开始

相关文章
|
12天前
|
数据采集 测试技术 Python
自动化淘宝秒杀:使用Selenium WebDriver的实战指南
本文详细介绍了如何利用Selenium WebDriver自动化淘宝秒杀操作,包括环境配置、代码实现及注意事项,旨在帮助读者提升秒杀成功率,同时提醒合理使用以遵守平台规则。
56 8
|
2月前
|
Web App开发 前端开发 JavaScript
探索Python科学计算的边界:利用Selenium进行Web应用性能测试与优化
【10月更文挑战第6天】随着互联网技术的发展,Web应用程序已经成为人们日常生活和工作中不可或缺的一部分。这些应用不仅需要提供丰富的功能,还必须具备良好的性能表现以保证用户体验。性能测试是确保Web应用能够快速响应用户请求并处理大量并发访问的关键步骤之一。本文将探讨如何使用Python结合Selenium来进行Web应用的性能测试,并通过实际代码示例展示如何识别瓶颈及优化应用。
125 5
|
2月前
|
数据采集 存储 JavaScript
自动化数据处理:使用Selenium与Excel打造的数据爬取管道
本文介绍了一种使用Selenium和Excel结合代理IP技术从WIPO品牌数据库(branddb.wipo.int)自动化爬取专利信息的方法。通过Selenium模拟用户操作,处理JavaScript动态加载页面,利用代理IP避免IP封禁,确保数据爬取稳定性和隐私性。爬取的数据将存储在Excel中,便于后续分析。此外,文章还详细介绍了Selenium的基本设置、代理IP配置及使用技巧,并探讨了未来可能采用的更多防反爬策略,以提升爬虫效率和稳定性。
|
2月前
|
Java 测试技术 C#
自动化测试之美:从Selenium到Appium
【10月更文挑战第3天】在软件开发的海洋中,自动化测试如同一艘航船,引领着质量保证的方向。本文将带你领略自动化测试的魅力,从Web端的Selenium到移动端的Appium,我们将一探究竟,看看这些工具如何帮助我们高效地进行软件测试。你将了解到,自动化测试不仅仅是技术的展示,更是一种提升开发效率和产品质量的智慧选择。让我们一起启航,探索自动化测试的世界!
|
2月前
|
JavaScript 前端开发 测试技术
精通Selenium:从基础到高级的网页自动化测试策略
【10月更文挑战第6天】随着Web应用变得越来越复杂,手动进行功能和兼容性测试变得既耗时又容易出错。自动化测试因此成为了现代软件开发不可或缺的一部分。Selenium是一个强大的工具集,它支持多种编程语言(包括Python),允许开发者编写脚本来模拟用户与Web页面的交互。本文将带领读者从Selenium的基础知识出发,逐步深入到高级的应用场景,通过丰富的代码示例来展示如何高效地进行网页自动化测试。
368 5
|
2月前
|
Web App开发 IDE 测试技术
自动化测试的利器:Selenium 框架深度解析
【10月更文挑战第2天】在软件开发的海洋中,自动化测试犹如一艘救生艇,让质量保证的过程更加高效与精准。本文将深入探索Selenium这一强大的自动化测试框架,从其架构到实际应用,带领读者领略自动化测试的魅力和力量。通过直观的示例和清晰的步骤,我们将一起学习如何利用Selenium来提升软件测试的效率和覆盖率。
|
25天前
|
Web App开发 设计模式 JavaScript
自动化测试之美:如何利用Selenium实现Web应用的高效测试
【10月更文挑战第29天】在软件开发的世界中,测试是确保产品质量的关键步骤。本文将带你了解如何使用Selenium这一强大的自动化测试工具,提高Web应用测试的效率和准确性。通过实际案例,我们将探索Selenium的核心功能及其在现代软件开发中的应用,旨在帮助读者掌握自动化测试的精髓,从而提升软件测试工作的整体效能。
28 0
|
2月前
|
Web App开发 缓存 Linux
高效Selenium测试技巧:轻松控制已开启的浏览器
【10月更文挑战第13天】在进行Selenium测试时,通常会启动新浏览器实例,但有时需要控制已开启的浏览器,以节省时间并更真实地模拟用户行为。这可通过设置Chrome为可远程控制并使用`Remote WebDriver`连接实现。需在启动Chrome时添加`--remote-debugging-port`参数,并通过Python脚本中的`webdriver.Remote`连接至指定端口。此外,还可利用会话ID(Session ID)重新连接浏览器,提高测试灵活性。需要注意浏览器版本兼容性及元素定位稳定性等问题,确保测试准确性和一致性。
312 1
|
2月前
|
测试技术 数据安全/隐私保护 开发者
自动化测试的奥秘:如何用Selenium和Python提升软件质量
【9月更文挑战第35天】在软件开发的海洋中,自动化测试是那艘能引领我们穿越波涛的帆船。本文将揭开自动化测试的神秘面纱,以Selenium和Python为工具,展示如何构建一个简单而强大的自动化测试框架。我们将从基础出发,逐步深入到高级应用,让读者能够理解并实现自动化测试脚本,从而提升软件的质量与可靠性。
|
2月前
|
Web App开发 Java 测试技术
一、自动化:web自动化。Selenium 入门指南:从安装到实践
一、自动化:web自动化。Selenium 入门指南:从安装到实践
46 0