Selenium浏览器交互原理与应用,玩转Web自动化测试

news2024/9/21 4:32:12

 目录

 前言:

浏览器交互:

Selenium的实现方式:

Selenium WebDriver:

WebDriver的等待机制:

总结:

 Web自动化测试:


 前言:

Web自动化测试是现代软件开发中必不可少的一个环节,它可以帮助开发人员快速自动化地测试Web应用程序,从而大大缩短测试周期,提高测试效率,降低测试成本。Selenium是一款广泛使用的Web自动化测试工具,它提供了丰富的API,可以方便地模拟用户在浏览器中的操作,如点击、输入、选择等,并对Web应用程序进行自动化测试。

浏览器交互:

在介绍Selenium原理之前,我们先来看一下浏览器交互。Web应用程序与浏览器之间是通过HTTP协议进行通信的,简单来说就是客户端(浏览器)向服务端(Web服务器)发送请求,服务器返回响应。当客户端收到响应后,会根据响应内容进行显示。在这个过程中,浏览器会根据HTML、CSS和JavaScript等Web技术解析和显示Web页面。

Selenium利用浏览器提供的驱动程序(Driver)来模拟用户在浏览器中的操作。在Selenium中,不同的浏览器需要使用不同的驱动程序。例如,Chrome浏览器需要使用ChromeDriver,Firefox浏览器需要使用GeckoDriver,Edge浏览器需要使用EdgeDriver等。Selenium通过驱动程序与浏览器进行交互,模拟用户在浏览器中的操作,如打开网页、点击链接、输入文本、提交表单等。

Selenium的实现方式:

下面我们来看一下Selenium的实现方式。Selenium提供了三种实现方式,分别是Selenium RC、Selenium IDE和Selenium WebDriver。Selenium RC是最早的Selenium工具,它通过在浏览器中嵌入JavaScript脚本,模拟用户在浏览器中的操作。Selenium IDE是一个可视化工具,可以记录用户在浏览器中的操作,并生成自动化测试脚本。Selenium WebDriver是Selenium最新的实现方式,由于其强大的功能和灵活性,已成为当前Web自动化测试的主流工具。

Selenium WebDriver:

Selenium WebDriver是基于W3C Web Driver协议实现的,它提供了各种API,可以方便地模拟用户在浏览器中的操作。例如,我们可以使用WebDriver实现下面的示例代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

# 创建Chrome浏览器对象
driver = webdriver.Chrome()

# 打开百度首页
driver.get("http://www.baidu.com")

# 在搜索框中输入关键字
elem = driver.find_element_by_name("wd")
elem.send_keys("Selenium Webdriver")

# 模拟回车键
elem.send_keys(Keys.RETURN)

# 关闭浏览器
driver.close()

在这段代码中,我们首先创建了Chrome浏览器对象,然后打开百度首页,搜索关键字“Selenium Webdriver”,最后关闭浏览器。其中,`driver.get()`方法用于打开指定的网址,`driver.find_element_by_name()`方法用于查找指定名称的元素,`elem.send_keys()`方法用于在文本框中输入文本,`elem.send_keys(Keys.RETURN)`方法模拟回车键,`driver.close()`方法用于关闭浏览器。

除了上述API外,Selenium WebDriver还提供了很多其他的API,例如`driver.find_element_by_id()`、`driver.find_element_by_xpath()`、`driver.find_element_by_css_selector()`等,可以根据元素的ID、XPath或CSS选择器查找指定的元素。此外,还可以对元素进行点击(`elem.click()`)、获取元素的属性(`elem.get_attribute()`)、获取元素的文本(`elem.get_text()`)等操作。

在使用Selenium时,需要注意一些细节问题。例如,需要在程序中指定驱动程序的路径(`webdriver.Chrome("path/to/chromedriver")`),否则Selenium无法启动浏览器。同时,需要注意浏览器版本与驱动程序版本的对应关系,否则也会出现兼容性问题。

WebDriver的等待机制:

另外,Selenium也提供了一些高级功能,如WebDriver的等待机制。在Web自动化测试中,需要等待页面加载完成后才能进行下一步操作,否则可能会导致测试失败。WebDriver提供了隐式等待(`driver.implicitly_wait()`)和显式等待(`WebDriverWait`)两种等待方式。隐式等待方式会在指定的时间内自动等待页面加载完成,而显式等待方式则需要指定等待条件,直到满足条件后才会进行下一步操作。例如,下面示例代码中的显式等待方式会等待页面上的某个元素出现后再进行点击操作:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 创建Chrome浏览器对象
driver = webdriver.Chrome()

# 打开百度首页
driver.get("http://www.baidu.com")

# 在搜索框中输入关键字
elem = driver.find_element_by_name("wd")
elem.send_keys("Selenium Webdriver")

# 等待搜索结果出现,并点击第一个结果
wait = WebDriverWait(driver, 10)
elem = wait.until(EC.presence_of_element_located((By.XPATH, '//div[@class="result c-container"][1]//a')))
elem.click()

# 关闭浏览器
driver.close()

在这段示例代码中,我们首先创建了Chrome浏览器对象,然后打开百度首页,搜索关键字“Selenium Webdriver”,等待搜索结果中的第一个链接出现,最后点击该链接。其中,`WebDriverWait`设置最长等待时间为10秒,`EC.presence_of_element_located`用于指定等待条件,即直到页面上至少出现一个满足条件的元素后再进行下一步操作。

总结:

综上所述,Selenium是一款功能强大的Web自动化测试工具,可以模拟用户在浏览器中的操作,对Web应用程序进行自动化测试。Selenium WebDriver是Selenium最新的实现方式,提供了丰富的API和高级功能,可以帮助开发人员快速构建Web自动化测试脚本,并大大提高Web自动化测试的效率和可靠性。

【自动化测试交流】:574737577icon-default.png?t=N3I4http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=NMRVNWflxt3xkgJD_Cj1eSi6GHgTNQAw&authKey=G4Z6oltN4M9aCbBQfUODeoKPeKUsDSGmyxsSOXuwLjjN%2BBtm5ZJD3KeOsXJHwpC%2F&noverify=0&group_code=574737577

自动化测试:

 Web自动化测试:

自动化测试-福利:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/536347.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ChatGPT4通道开放接入基于OPEN AI 平台你的任何APP 可一键接入AI 智能

你一定很好奇什么是 OPEN AI快速开发平台 顾名思义,开放的OPEN AI平台。 基于这个平台你的上层应用,如何 APP,小程序,H5,WEB, 公众号,任何一切终端都可以轻松接入,AI智能应用。 开发初衷 爆肝一周,我开源了ChatGPT 中文版接口&a…

Win11右键菜单选项变成英文了怎么恢复回来?

Win11右键菜单选项变成英文了怎么恢复回来?有用户在使用Win11系统的时候,遇到了右键菜单选项的一些选项变成英文的情况,导致自己的使用受到了影响。那么这个情况怎么去进行解决呢?来看看以下的解决方法吧。 方法一:直接…

零基础学网络安全?一般人我还是劝你算了吧

一、网络安全学习的误区 1.不要试图以编程为基础去学习网络安全 不要以编程为基础再开始学习网络安全,一般来说,学习编程不但学习周期长,且过渡到网络安全用到编程的用到的编程的关键点不多。一般人如果想要把编程学好再开始学习网络安全往…

mathtype公式符号显示不对

文章目录 问题解决方法结果 记录攥写论文遇到的问题及解决方法 问题 使用mathtype编辑公式过后,发现公式显示不对,出现两种问题: 1:部分符号变为方框 2:符号大小异常 例如: 解决方法 第一种&#xff1a…

KDZD5550系列电压击穿试验仪操作说明

一、产品概述 KDZD5550系列电压击穿试验仪根据国家GB1408.1-2006《绝缘材料电气强度试验方法》其作用可称为电气绝缘强度试验仪、介质强度测试仪等。其工作原理是:把一个高于正常工作的电压加在被测设备的绝缘体上,持续一段规定的时间,加在上…

优思学院|DOE试验设计在六西格玛项目的哪个阶段进行?

六西格玛DMAIC是一种用于现有流程改进的方法,其中包括五个阶段:定义阶段(D),测量阶段(M),分析阶段(A),改进阶段(I)和控制阶…

【C++动态内存管理】

目录 一、C/C内存分布二、C中动态内存管理2.1new/delete操作内置类型2.2new/delete操作自定义类型 四、new和delete的实现原理4.1内置类型4.2自定义类型 五、 定位new表达式(placement-new)六、总结 一、C/C内存分布 一张图重温一下C/C内存分布。 二、C中动态内存管理 C中的…

计算物理专题:高维Romberg数值积分方法

有话无话,先上代码,正确与否,先给结论,可信有无,先出文献计算物理,傅哥最强 真计算还得看SCU物拔(不是)(狗头)(骄傲)这种方法的思想是…

Springboot +Flowable,会签、或签简单使用(三)

一.简介 **会签:**在一个流程中的某一个 Task 上,这个 Task 需要多个用户审批,当多个用户全部审批通过,或者多个用户中的某几个用户审批通过,就算通过。 例如:之前的请假流程,假设这个请假流程…

【笔试强训选择题】Day15.习题(错题)解析

作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:笔试强训选择题 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!! 文章目录 前言 一、…

Linux Shell 实现一键部署二进制Python

python 前言 Python由荷兰数学和计算机科学研究学会的吉多范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。 Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使…

监控知识体系

从来没讲过运维,因为我觉得运维这种东西不需要太多的知识面,然后我一个做了运维朋友告诉我大错特错,他就是从3K的运维一步步到40K的,甚至笑着说:我现在感觉自己什么都能做。 既然讲,就讲最重要的吧。 监控…

接口自动化测试分层设计与实践总结

本文以笔者当前使用的自动化测试项目为例,浅谈分层设计的思路,不涉及到具体的代码细节和某个框架的实现原理,重点关注在分层前后的使用对比,可能会以一些伪代码为例来说明举例。 接口测试三要素: 参数构造 发起请求&a…

NA、商业和分销市场通盘布局,华为“四大角色”浮出水面

作者 | 曾响铃 文 | 响铃说 数字经济深化发展,谋求数字化转型的行业、企业客户,越来越渴望满足自身需求的产品或解决方案。 这给从事转型服务的ICT厂商们提出了新的挑战。 在客户面前,拥有核心技术与支持能力的企业,与进击数字…

yolov1

1、对precision(精确度)和recall(召回度)的理解 1、TP TN FP FN的概念 TP(True Positives)意思就是被分为了正样本,而且分对了。 TN(True Negatives)意思就是被分为了负…

原装美国Agilent安捷伦34970A数据采集仪

Agilent安捷伦34970A数据采集仪 3槽主机,内置GPIB和RS232接口 6 1/2 位(22 位)内部 DMM,每秒扫描多达 250 个通道(选件 001 不可用) 8个开关和控制插件模块可供选择 内置信号调理可测量热电偶、RTD 和热敏电…

linux基础(IO)中

目录: 1.回顾上一篇的文件系统调用接口 2.返回值文件描述符 3.文件描述符分配规则 ---------------------------------------------------------------------------------------------------------------------------- 1.回顾上一篇的文件系统调用接口 open &…

【数据结构】二叉树进阶题目练习

文章目录 二叉树创建字符串二叉树的分层遍历1二叉树的分层遍历2给定一个二叉树, 找到该树中两个指定节点的最近公共祖先二叉树搜索树转换成排序双向链表二叉树展开为链表根据一棵树的前序遍历与中序遍历构造二叉树根据一棵树的中序遍历与后序遍历构造二叉树二叉树的前序遍历 非…

学爬虫,吃牢饭,卑微前端小丑复制antd的icon图标真的太难啦,我用python几秒扒完

目标需求 最近用reactviteantd写了个后管项目,在菜单管理中,需要用户选择菜单的icon图标。 如下: 而在react中使用antd UI库,每个组件都是需要单独导入的,也就是说,如果我要用到所有icon,我需…

亚马逊云科技进一步加快BMW Group的Analytics步伐

BMW Group和亚马逊云科技于2020年宣布达成全面战略合作。本次合作的目标是通过将数据分析置于决策中心,进一步加快BMW Group的创新步伐。本次合作的一个关键要素是进一步开发BMW Group的云数据中心(CDH)。这是在云端管理全公司数据和数据解决…