Selenium 基础
1. 什么是 Selenium?
Selenium 就是一套专门用于自动化 Web 浏览器的工具。而已!你用这个东西来做什么完全取决于你。主要是用于自动化 Web 应用程序进行测试,但肯定不仅限于此。
它也是无数其他浏览器自动化工具,API 和框架的核心技术。
2. 什么是 selenium IDE?
Selenium IDE 是 Selenium 脚本的集成开发环境。
它被实现为 Firefox 扩展(插件),并允许您记录,编辑和调试测试。
由于 IDE 录制生成的脚本不具备可维护性,实际测试中没有用到。
3. Selenium Webdriver 原理?
- 每个 Selenium 命令,这里指的是所谓的基础操作,例如,点击、输入等,都会创建一条 HTTP 请求, 发送给 Browser WebDriver
- Browser WebDriver 使用一个 HTTP Server 监听和接收 HTTP 请求
- HTTP Server 根据协议规则定义这些 Selenium 命令对应的浏览器具体操作
- 浏览器执行这些操作
- 浏览器将执行状态返回给 HTTP Server
- HTTP Server 再将这些状态信息返回给自动化脚本
4. 如何设计自动化测试用例
- 编写测试脚本之前要编写测试用例,而且测试用例不能直接使用手工测试的用例。自动化的测试用例是一个完整的场景:用户登录系统到用户退出。
- 用例只验证一个功能点。不用试图登陆后验证所有的功能再退出,测试用例尽量只做正向的逻辑验证。
- 用例之间不产生关联,相互独立,也要高内聚,低耦合,测试用例关注的是功能逻辑的实现。
- 测试用例的上下文必须有一定的顺序性,前置条件清晰,检查点的设置要侧重,全面,灵活
- 测试用例对数据的操作要进行还原测试用例必须是可回归的。
5. webdriver 如何开启和退出一个浏览器?
开启:dr = webdriver.浏览器类型()
关闭:dr.quit()
6. 什么是自动化测试框架?
测试自动化框架是设置特定产品的自动化规则的集成系统。该系统集成了功能库,测试数据源,对象详细信息和各种可重复使用的模块。这些组件用作需要组装以代表业务流程的小型构建块。
该框架为测试自动化提供了基础,并简化了自动化工作。
也是为自动化软件测试提供支持的假设框架,概念和工具的主要优点是维护成本低。
如果任何测试用例发生变化,那么只需要更新测试用例文件,驱动程序脚本和启动脚本将保持不变。
理想情况下,如果应用程序发生更改,则无需更新脚本。
选择正确的框架 / 脚本技术有助于降低成本。与测试脚本相关的成本是由于开发和维护工作。
7. Selenium 是什么,流行的版本有哪些?
Selenium 是基于 Web 的最流行的 UI 自动化测试工具。它提供了一组支持多种平台的公开 API(例如 Linux,Windows,Mac OS X 等)。此外,像 Google Chrome,Mozilla Firefox,Internet Explorer 和 Safari 等所有现代浏览器都可以用来运行 Selenium 测试。它也涵盖了 Android 平台,其中 Appium 是实现 Selenium Webdriver 界面的工具,用于移动自动化。
值得注意的是,除了许多后来的小型版本之外,Selenium 还有三个主要版本:
- Selenium 1 或 Selenium RC,于 2004 年初发布,提供了一个使用服务器与浏览器交换命令和响应的 API 集。
- Selenium 2 或 Selenium Webdriver,在 2011 年中推出,并在 Selenium 功能中引入了一系列重大改进。这些新的 API 完全取代了服务器组件,并与目标浏览器本地交互。
- Selenium 3 这个版本是在 2016 年末发布的大版本。它带来的主要变化是引入 Webdriver API 的 W3C 规范,用于浏览器自动化。也就是说,每个主要的浏览器都会有自己的 Webdriver API 来实现功能。
- Selenium 4 这个版本还在测试中,该版本主要是在底层更符合 W3C 规范,对上层用户使用并无太大影响。
8. XPath 中使用单斜杠和双斜杠有什么区别?
如果 XPath 是从文档节点开始,它将允许创建“绝对”路径表达式。
例如/html/body/p
匹配 body 下所有的段落元素。
如果 XPath 在文档中的任意位置开始进行选择匹配,那么它将允许创建“相对”路径表达式。例如//p
匹配所有的段落元素。
9. 你对 Selenium Grid 有什么了解?它提供了什么功能?
Selenium Grid 是一款利用现有计算基础架构大幅加速 Web 应用程序功能测试的工具。允许测试者轻松地在多台机器上并行运行多个测试,并且可以在异构环境中运行。
基于优秀的 Selenium Web 测试工具,Selenium Grid 允许测试者并行运行多个 Selenium Remote Control 实例。更好的是,它集成显示所有 Selenium 远程控制,所以不必担心实际的基础设施。Selenium Grid 将运行 Selenium 测试套件所需的时间,缩短到 Selenium 实例的单个实例运行时间的一小点。
10. 当有很多定位器时,如 ID、名称、XPath、CSS 定位器,我应该使用哪一个?
如果有唯一的名称或标识符可用,那么应该使用它们来代替 XPath 和 CSS 定位器。如果没有,那么 CSS 定位器应该被优先考虑,因为在大多数现代浏览器中,它们的速度比 XPath 更快,但 XPath 更加灵活与实用。
11. 隐式等待与显式等待有什么不同?
隐式等待是设置的全局等待,分为
- 页面加载超时等待
- 页面元素加载超时
- 异步脚本超时。
如果是页面元素超时,设置等待时间,是对页面中的所有元素设置加载时间。隐式等待是其实可以理解成在规定的时间范围内,浏览器在不停的遍历页面属性,直到找到相关元素或者时间结束。
显式等待只是用于特定搜索的一个计时器。它的可扩展性更强,你可以设置它来等待任何条件。通常情况下,可以使用一些预先构建的条件来等待元素变得可点击,可见,不可见等,或者只是编写适合需求的条件。
实际测试中隐式等待通常就会在打开浏览器后加上。