在这个由两部分组成的系列文章的第1部分中,我们深入研究了Selenium WebDriver背后的理论以及为什么它对于跨浏览器测试非常有用。
Selenium是一种流行的自动化测试框架,主要用于跨浏览器测试。它是开源的,非常适合 在不同的浏览器(如Firefox,Chrome,Internet Explorer,Microsoft Edge等)上自动测试 Web应用程序.Selenium已经成为一个着名的框架,并且正在与其他测试框架(如HP QTP)进行激烈的竞争(快速测试专业)和AKA HP UFT(统一功能测试)。查看Selenium WebDriver将帮助您开发对Selenium套件Selenium WebDriver体系结构组件的基本了解,并向您展示如何运行跨浏览器兼容性的自动化测试。
Selenium集成开发环境(IDE)
Selenium IDE是一个简单的Firefox插件,用于记录和回放脚本。但是,Selenium IDE只能用于编写 自动化脚本, 以便自动测试简单的用例。Selenium IDE不支持条件语句,异常处理,循环,屏幕截图捕获等。对于复杂用例的自动化,大多数开发人员和测试人员更愿意选择 Scripting测试而不是Record and Replay测试。Selenium测试套件包括Selenium Remote Control(RC)或Selenium WebDriver。
Selenium IDE可用于不同的操作系统,即Windows,Linux,macOS等。用于Firefox的Selenium IDE可以从这里下载 。
Selenium Remote Control(RC)
为了测试复杂场景,可以使用Selenium Remote Control(RC)。它基于客户端 - 服务器模型,可以在服务器控制的浏览器上执行测试。有不同编程语言的客户端库使开发人员可以轻松 地 用编程语言编写有效的测试用例,在这些编程语言中他们很舒服并具有专业知识。从版本2.25.0开始,RC支持Java,C#,Python,Perl,Ruby等。
Selenium Server是Selenium RC的核心组件。下面列出了Selenium RC的一些核心特性/职责:
- 包含核心Selenium Framework,它主要负责在浏览器[Chrome,Firefox,Internet Explorer,Microsoft Edge等]中注入相同内容。
- 客户端程序向RC发送命令,然后由服务器解释,然后发送到浏览器。
- 执行后,结果将发送回客户端。
- 客户端和服务器通过HTTP GET和POST的正常机制进行通信。熟悉客户端 - 服务器概念的人可以轻松地使用Selenium和WebDriver编写测试代码。
如前所述,Selenium RC支持不同的浏览器,不同于仅适用于Mozilla Firefox的Selenium IDE。Selenium RC的缺点是它不支持记录广告回放功能,这对于任务重复的测试用例的自动化至关重要,特别是对于 回归测试。在使用Selenium RC执行测试之前,应手动调用Selenium RC Server的实例,并且该实例应在整个测试周期中运行 。
Selenium WebDriver
Selenium IDE是基于GUI的,而Selenium RC是一个独立的Java程序,允许您执行HTML测试套件。与Selenium IDE和Selenium RC相比,Selenium WebDriver框架得到了更广泛的应用。与基于客户端 - 服务器模型的Selenium RC不同,Selenium WebDriver框架是通过特定于浏览器的驱动程序实现的; 即,每个浏览器将具有其相应的WebDriver应用程序,在该应用程序上将执行自动化测试。
因此,Selenium WebDriver直接与浏览器通信,因为它不需要任何单独的组件,如Selenium Server。它支持各种语言,例如C#,Ruby,Java,Python和Perl。在您继续阅读Selenium WebDriver教程之前,请确保为正在执行跨浏览器测试的浏览器下载Selenium WebDriver。您可以从以下链接下载Selenium WebDriver:
Selenium Grid
在您必须测试仅限于少数浏览器,操作系统或设备的代码之前,可以进行串行测试。但是,一旦必须在具有多种组合的环境中形成测试,测试方法就会动摇。这是并行测试非常有用的地方,因为它可以加速整个测试过程。并行测试可以让您同时在不同的测试配置中执行类似的测试用例。您还可以在同一浏览器中同时执行不同的测试用例。
回到基础。Selenium Grid主要用于并行测试,因为它有助于同时针对不同的浏览器和操作系统在不同的机器上运行测试。它与Selenium RC一起完成工作。一个展示Selenium Grid用法的例子如下:
from selenium
import webdriver
from selenium.webdriver.common.keys
import Keys
desired_cap = { 'platform' : 'win10', 'browserName' : 'chrome', 'version' : "67.0", }
url = "https://username:acsessToken@{LMABDA GRID URL}/wd/hub"
driver = webdriver.Remote( desired_capabilities=desired_cap, command_executor= url )
driver.implicitly_wait(1)
driver.get("http://www.google.com/")
driver.quit()
Selenium WebDriver架构
作为Selenium WebDriver教程的一部分,必须查看构成Selenium WebDriver架构的主要块:
- Selenium客户端库
- JSON有线协议
- 浏览器驱动
- 浏览器
让我们更详细地看一下每个组件。
Selenium客户端库
如前所述,开发人员可以使用Selenium编写不同语言的测试代码,如C#,Java,Python,Perl等。由于Selenium客户端库或Selenium语言绑定,可以提供多语言支持。例如,如果您使用Python编写代码,则需要Python客户端库。可以从此处下载用于不同编程语言的Selenium客户端驱动程序 。
JSON有线协议
JSON(JavaScript对象表示法)有线协议有助于在客户端和服务器之间传输数据。它是一个基于REST(Representational State Transfer)的API。每个浏览器都有自己的浏览器驱动程序。
浏览器驱动
浏览器驱动程序主要用于与浏览器通信。由于浏览器的内部逻辑及其功能未被揭示,浏览器驱动程序确保必要的“封装”层,以便使执行级别细节更加抽象。每个浏览器都有相应的浏览器驱动 请参阅本文中标题为“Selenium WebDriver”的部分,其中包含有关下载浏览器驱动程序的位置的信息。
浏览器
由于浏览器驱动程序适用于Chrome,Firefox,Internet Explorer,Safari,Microsoft Edge等流行浏览器,因此您可以使用它们中的任何一种来执行跨浏览器测试。应该注意的是,您无法在浏览器驱动程序不公开的浏览器上对网站进行跨浏览器测试。
第1部分就是全部!回到周一,我们将看到你需要跨多个浏览器实现Selenium所需的Python代码。
本文暂时没有评论,来添加一个吧(●'◡'●)