selenium自动化测试框架——面试题整理

目录

        1. 什么是 Selenium?它的工作原理是什么?

2. Selenium 主要组件

3. 常见 WebDriver 驱动

4. Selenium 如何驱动浏览器?

5. WebDriver 协议是什么?

6. Page Object 模式与 Page Factory

7. 如何判断元素是否可见?

8. 如何判断元素是否存在?

9. Hidden 或 display=none 的元素能否被 Selenium 定位?

10. Selenium 无法找到元素的可能原因?

11. 如何提高元素交互成功率?

12. 如何定位动态元素?

13. 如何处理动态加载的元素?

14. Selenium 何时使用 JavaScript?

15. 如何处理 Web 弹窗?

16. Selenium 是否支持桌面应用测试?

17. 如何在 WebDriver 中打开网页?

18. Selenium 常见异常

19. 为什么不推荐 XPath?

20. 如何判断页面上元素是否存在?

21. 如何通过子元素定位父元素?

22. 如何截取单个元素的截图?

23. 元素 click() 无效怎么办?

24. 如何提高 Selenium 执行速度?

25. 如何提高 Selenium 稳定性?

26. 如何判断复选框/单选框是否被选中?

27. 如何上传文件?

28. 如何截取屏幕截图?

29. Assert 与 Verify 的区别?

30. Selenium WebDriver 的优点

31. 什么是 Selenium Grid?


1. 什么是 Selenium?它的工作原理是什么?

Selenium 是一个开源的 Web 自动化测试框架,支持多种编程语言(如 Java、Python、C# 等),可模拟用户操作浏览器。

工作原理:

  1. Client(测试代码) 通过 WebDriver 协议发送指令。
  2. Driver(浏览器驱动) 充当服务器,解析指令并控制浏览器执行操作。
  3. 浏览器 执行操作后返回结果。

2. Selenium 主要组件

  1. Selenium IDE(录制回放工具)
  2. Selenium WebDriver(核心 API,控制浏览器)
  3. Selenium Grid(分布式执行测试)

3. 常见 WebDriver 驱动

  • ChromeDriver
  • FirefoxDriver
  • EdgeDriver
  • SafariDriver
  • InternetExplorerDriver

4. Selenium 如何驱动浏览器?

  1. Selenium 代码通过 WebDriver API 发送 HTTP 请求给浏览器驱动。
  2. 浏览器驱动接收指令,调用浏览器原生接口执行操作。
  3. 执行结果通过 HTTP 响应返回给 Selenium 代码。

5. WebDriver 协议是什么?

WebDriver 使用 W3C WebDriver 协议,基于 HTTP 和 JSON 格式,允许远程控制浏览器。

6. Page Object 模式与 Page Factory

  • Page Object:使用类封装页面元素和操作,提高代码可读性和维护性。
  • Page Factory:Selenium 提供的工具,简化 Page Object 实现。

7. 如何判断元素是否可见?

boolean visible = driver.findElement(By.id("XXX")).isDisplayed();
boolean selected = driver.findElement(By.id("XXX")).isSelected();
boolean enabled = driver.findElement(By.id("XXX")).isEnabled();

8. 如何判断元素是否存在?

使用 findElements() 结合 size() 判断:

if(driver.findElements(By.id("XXX")).size() > 0) {// 元素存在
}

9. Hidden 或 display=none 的元素能否被 Selenium 定位?

不能,Selenium 不能直接操作不可见元素。

10. Selenium 无法找到元素的可能原因?

  1. 定位方式错误
  2. 页面加载过慢(可用显式等待)
  3. 元素在 iframe 中(需 switchTo().frame()

11. 如何提高元素交互成功率?

  • 使用显式等待 (WebDriverWait)
  • 确保元素可见
  • 处理滚动问题

12. 如何定位动态元素?

  • 使用 XPath 轴parent, following-sibling
  • 使用 findElements() 遍历

13. 如何处理动态加载的元素?

  • 触发加载后再 findElement()
  • 使用 显式等待

14. Selenium 何时使用 JavaScript?

  • 操作不可见元素
  • 滚动页面
((JavascriptExecutor) driver).executeScript("window.scrollTo(0, document.body.scrollHeight)");

15. 如何处理 Web 弹窗?

Alert alert = driver.switchTo().alert();
alert.accept();
alert.dismiss();

16. Selenium 是否支持桌面应用测试?

不支持,Selenium 仅限 Web 应用。

17. 如何在 WebDriver 中打开网页?

driver.get("https://example.com");
driver.navigate().to("https://example.com");

18. Selenium 常见异常

  • NoSuchElementException(找不到元素)
  • TimeoutException(超时)
  • ElementNotInteractableException(元素不可交互)
  • NoSuchWindowException(窗口不存在)

19. 为什么不推荐 XPath?

  • XPath 解析较慢
  • 绝对路径容易变化
  • CSS 选择器更高效

20. 如何判断页面上元素是否存在?

  1. try...catch 捕获异常
  2. findElements() 结合 size() 判断

21. 如何通过子元素定位父元素?

  • findElement(By.xpath(".."))
  • //*[@name='hello']/..

22. 如何截取单个元素的截图?

  1. 截取整个页面
  2. 获取元素 locationsize
  3. 裁剪图片

23. 元素 click() 无效怎么办?

使用 JavaScript 点击:

((JavascriptExecutor) driver).executeScript("arguments[0].click();", element);

24. 如何提高 Selenium 执行速度?

  • 使用 Java 代替 Python(执行效率更高)
  • 避免 Thread.sleep(),使用显式等待
  • 使用 Selenium Grid 并行测试

25. 如何提高 Selenium 稳定性?

  • 稳定的定位方式(优先使用 ID)
  • 显式等待
  • 封装常见操作

26. 如何判断复选框/单选框是否被选中?

driver.findElement(By.xpath("元素路径")).isSelected();

27. 如何上传文件?

driver.findElement(By.id("fileUpload")).sendKeys("C:\\path\\to\\file.txt");

28. 如何截取屏幕截图?

File srcFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(srcFile, new File("screenshot.png"));

29. Assert 与 Verify 的区别?

  • Assert 失败后测试终止
  • Verify 失败后继续执行

30. Selenium WebDriver 的优点

  • 跨浏览器兼容性
  • 支持多语言
  • 可集成 CI/CD

31. 什么是 Selenium Grid?

Selenium Grid 允许分布式执行测试,在不同机器和浏览器上并行运行测试。


总结: Selenium 主要用于 Web 自动化测试,熟悉 WebDriver API、定位方式、等待机制、异常处理及 JavaScript 操作可以大大提高测试的稳定性和效率。

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

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

相关文章

【安全测试】测开方向学习遇到的问题记录

【问题一】springboot如何访问静态资源文件 springboot启动根路径位置 F:\untitled05\demo4\src\main\resources\static 例如图片位置存放在F:\untitled05\demo4\src\main\resources\static即可 配置文件配置 spring.web.resources.static-locationsfile:/F:/untitled05/de…

Unity|小游戏复刻|见缝插针2(C#)

控制针的运动 新建一个Pin脚本 将Pin脚本拖到针Pin的下面 保存代码 using UnityEngine;public class Pin : MonoBehaviour {public float speed 5;private bool isFly false;private bool isReach false;private Transform startPosition;// Start is called once bef…

2025年数学建模美赛 A题分析(3)楼梯使用方向偏好模型

2025年数学建模美赛 A题分析(1)Testing Time: The Constant Wear On Stairs 2025年数学建模美赛 A题分析(2)楼梯磨损分析模型 2025年数学建模美赛 A题分析(3)楼梯使用方向偏好模型 2025年数学建模美赛 A题分…

DeepSeek大模型技术解析:从架构到应用的全面探索

一、引言 在人工智能领域,大模型的发展日新月异,其中DeepSeek大模型凭借其卓越的性能和广泛的应用场景,迅速成为业界的焦点。本文旨在深入剖析DeepSeek大模型的技术细节,从架构到应用进行全面探索,以期为读者提供一个…

「AI学习笔记」深度学习的起源与发展:从神经网络到大数据(二)

深度学习(DL)是现代人工智能(AI)的核心之一,但它并不是一夜之间出现的技术。从最初的理论提出到如今的广泛应用,深度学习经历了几乎一个世纪的不断探索与发展。今天,我们一起回顾深度学习的历史…

嵌入式Linux:如何监视子进程

目录 1、wait()函数 2、waitpid()函数 3、SIGCHLD信号 在嵌入式Linux系统中,父进程通常需要创建子进程来执行特定任务,例如处理网络请求、执行计算任务等。监视子进程的状态不仅可以确保资源的合理利用,还能防止僵尸进程的产生&#xff0c…

「 机器人 」扑翼飞行器控制策略浅谈

1. 研究背景 • 自然界中的蜂鸟以极高的机动能力著称,能够在短至0.2秒内完成如急转弯、快速加速、倒飞、躲避威胁等极限机动。这种表现对微型飞行器(Flapping Wing Micro Air Vehicles, FWMAVs)具有重要的仿生启示。 • 目前的微型飞行器距离自然生物的飞行能力仍有相当差距…

渗透测试之WAF规则触发绕过规则之规则库绕过方式

目录 Waf触发规则的绕过 特殊字符替换空格 实例 特殊字符拼接绕过waf Mysql 内置得方法 注释包含关键字 实例 Waf触发规则的绕过 特殊字符替换空格 用一些特殊字符代替空格,比如在mysql中%0a是换行,可以代替空格 这个方法也可以部分绕过最新版本的…

c++ map/multimap容器 学习笔记

1 map的基本概念 简介: map中所有的元素都是pair pair中第一个元素是key(键),第二个元素是value(值) 所有元素都会根据元素的键值自动排序。本质: map/multimap 属于关联式容器,底…

深入理解若依RuoYi-Vue数据字典设计与实现

深入理解若依数据字典设计与实现 一、Vue2版本主要文件目录 组件目录src/components:数据字典组件、字典标签组件 工具目录src/utils:字典工具类 store目录src/store:字典数据 main.js:字典数据初始化 页面使用字典例子&#xf…

PyTorch 与 Python 版本对应关系

PyTorch 支持多个 Python 版本,但不同版本的 PyTorch 可能对 Python 版本有不同的要求。一般来说: PyTorch 与 Python 版本对应关系 PyTorch 版本支持的 Python 版本2.2.x3.8 - 3.122.1.x3.8 - 3.112.0.x3.8 - 3.101.13.x3.7 - 3.101.12.x3.7 - 3.101.…

JavaScript系列(47)--音频处理系统详解

JavaScript音频处理系统详解 🎵 今天,让我们深入探讨JavaScript的音频处理系统。Web Audio API为我们提供了强大的音频处理和合成能力,让我们能够在浏览器中实现复杂的音频应用。 音频系统基础概念 🌟 💡 小知识&…

FortiOS 存在身份验证绕过导致命令执行漏洞(CVE-2024-55591)

免责声明: 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在…

Linux网络之TCP

Socket编程--TCP TCP与UDP协议使用的套接字接口比较相似, 但TCP需要使用的接口更多, 细节也会更多. 接口 socket和bind不仅udp需要用到, tcp也需要. 此外还要用到三个函数: 服务端 1. int listen(int sockfd, int backlog); 头文件#include <sys/socket.h> 功能: …

GIS与相关专业软件汇总

闲来无事突然想整理一下看看 GIS及相关领域 究竟有多少软件或者工具包等。 我询问了几个AI工具并汇总了一个软件汇总&#xff0c;不搜不知道&#xff0c;一搜吓一跳&#xff0c;搜索出来了大量的软件&#xff0c;大部分软件或者工具包都没有见过&#xff0c;不知大家还有没有要…

(四)线程 和 进程 及相关知识点

目录 一、线程和进程 &#xff08;1&#xff09;进程 &#xff08;2&#xff09;线程 &#xff08;3&#xff09;区别 二、串行、并发、并行 &#xff08;1&#xff09;串行 &#xff08;2&#xff09;并行 &#xff08;3&#xff09;并发 三、爬虫中的线程和进程 &am…

学历赋

崇岳北峙&#xff0c;紫气东临&#xff1b;学海横流&#xff0c;青云漫卷。连九陌而贯八荒&#xff0c;纳寒门而载贵胄。墨池泛舟&#xff0c;曾照匡衡凿壁之光&#xff1b;杏坛飞絮&#xff0c;犹闻仲尼弦歌之音。然观当下&#xff0c;黉宇接天如笋立&#xff0c;青衫叠浪似云…

支持selenium的chrome driver更新到132.0.6834.110

最近chrome释放新版本&#xff1a;132.0.6834.110 如果运行selenium自动化测试出现以下问题&#xff0c;是需要升级chromedriver才可以解决的。 selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only s…

python爬虫入门(一) - requests库与re库,一个简单的爬虫程序

目录 web请求与requests库 1. web请求 1.1 客户端渲染与服务端渲染 1.2 抓包 1.3 HTTP状态代码 2. requests库 2.1 requests模块的下载 2.2 发送请求头与请求参数 2.3 GET请求与POST请求 GET请求的例子&#xff1a; POST请求的例子&#xff1a; 3. 案例&#xff1a;…

Luzmo 专为SaaS公司设计的嵌入式数据分析平台

Luzmo 是一款嵌入式数据分析平台&#xff0c;专为 SaaS 公司设计&#xff0c;旨在通过直观的可视化和快速开发流程简化数据驱动决策。以下是关于 Luzmo 的详细介绍&#xff1a; 1. 背景与定位 Luzmo 前身为 Cumul.io &#xff0c;专注于为 SaaS 公司提供嵌入式分析解决方案。…