每个有抱负的测试人员,尤其是打算使用基于 Web 的应用程序的测试人员,都必须对 Selenium 有很好的了解。这是因为,无论何时申请有关基于 Web 的测试的工作机会,都请期待基于 Selenium 的问题。
Selenium完全用 Java 编写,是使用最广泛的自动化测试工具之一。它易于使用、简单并支持以多种编程语言编写测试脚本,包括 C#、Groovy、Java、Perl 和 Python。
Selenium常见面试题和答案合集
在这里,我们收集了最热门的 Selenium 面试问题,这些问题将帮助你补充现有的 Selenium 知识,并检查你在面对一系列 Selenium 面试问题时的表现。所以,让我们直接进入它:
问题:请解释各种 Selenium 组件。
答:尽管被标记为自动化测试工具,Selenium 并不是一个独立的工具。相反,它是几个工具的包,因此是一个测试套件。Selenium 套件具有以下组件:
- Selenium IDE –作为 Firefox 插件分发,Selenium IDE 用作记录和播放工具。
- Selenium Grid –允许同时跨多个平台和环境分发测试执行。
- Selenium RC –一种服务器,允许用户以所需的编程语言创建测试脚本。Selenium RC 还允许在各种 Web 浏览器中执行测试脚本。
- Selenium WebDriver –除了使用其本机兼容性进行自动化之外,还直接与 Web 浏览器通信。
问题:你能否说明 Selenium 的局限性?
回答:
- 尽管 Selenium 有一个活跃的社区支持,但没有供应商支持可用
- 没有内置的报告生成。需要使用JUnit、TestNG等第三方工具
- 无法提供条形码和验证码阅读器的测试
- 需要良好的编程语言知识
- 仅支持测试基于 Web 的应用程序。因此,不支持测试移动应用程序
Selenium常见面试题有哪些:Selenium 中有哪些不同类型的定位器?
答:定位器是一种地址,它提供了一种独特的方式来识别网页上的网络元素。Selenium 有一系列定位器来识别网页的不同元素,即:
- ClassName
- CSS Selector
- DOM
- ID
- LinkText
- Name
- PartialLinkText
- TagName
- XPath
问题: 你能解释一下 Selenium 中 assert 和 verify 命令之间的区别吗?
Selenium面试题解析: assert 和 verify 命令都负责检查给定条件是真还是假。但是,两者之间的主要区别在于它们各自在条件检查完成后所做的事情。
如果在验证命令的情况下条件为假,则执行停止并且不会执行进一步的测试。但是,如果条件为真,则程序控制将继续执行下一个测试步骤。
另一方面,验证命令不关心条件检查的结果。无论是真还是假,程序都会继续执行,所有的测试步骤都会完成。
问题: 你对Selenium 中的XPath 有何理解?你能区分 XPath 中的“/”和“//”吗?
答:XPath 是 Selenium 中的一种定位器,用于根据其 XML 路径定位 Web 元素。XML 表示可扩展标记语言,用于存储、组织和传输任意数据。与 HTML 标签非常相似,XML 将数据存储在键值对中。
由于 HTML 和 XML 都是标记语言,因此 XPath 可用于定位网页上的 HTML 元素。XPath 的基本原理是在整个网页的多个元素之间遍历,并允许它们通过其他元素的引用找到一个元素。
单斜线即'/'用于创建具有绝对路径的XPath,而双斜线即'//'用于创建具有相对路径的XPath。
在绝对路径中,创建的 XPath 将从文档节点或起始节点开始选择。但是,在相对路径中,创建的 XPath 可以从整个 Web 文档中的任何位置开始选择。
问题: 你将如何使用 WebDriver 启动浏览器?
答:使用 WebDriver 启动 Google Chrome、Mozilla Firefox 和 Internet Explorer 的语法分别是,
- WebDriver driver = new FirefoxDriver();
- WebDriver driver = new ChromeDriver();
- WebDriver driver = new InternetExplorerDriver();
问题: 请解释如何查找元素是否显示在屏幕上。
答:Selenium 套件的 WebDriver 组件有助于检查 Web 元素的可见性,这些元素可以是按钮、复选框、下拉框、标签、单选按钮等。WebDriver 允许使用以下三种方法执行此操作:
- isDisplayed()
boolean buttonPresence = driver.findElement(By.id(“some id”)).isDisplayed(); - isEnabled()
boolean searchIconEnabled = driver.findElement(By.id(“some id”)).isEnabled(); - isSelected()
boolean buttonSelected = driver.findElement(By.id(“some id”)).isSelected();
问题: 同源政策是什么意思?如何处理?
答:Origin 是 URL 的主机、方案和端口的顺序组合。该问题同源策略限制从原点即是从一个用户试图访问该文档的不同访问文档的DOM。
不允许 Selenium 核心访问来自与其启动位置不同的源的元素。引入 Selenium 远程控制是为了处理同源策略的问题。
问题: 你知道如何使用 Selenium 获取 Web 元素的文本吗?
答:为了检索指定网页元素的内部文本,Selenium 提供了 get 命令。它返回一个字符串值并且不需要任何参数。Get 命令是最广泛使用的命令之一,用于验证网页上显示的错误、标签、消息等。get 命令的一般语法是:
String Text = driver.findElement(By.id(“Text”)).getText();
问题: 请列举 WebDriver 中可用的各种类型的驱动程序和等待。
答:WebDriver 支持以下驱动程序:
- AndroidDriver
- ChromeDriver
- FirefoxDriver
- HtmlUnitDriver
- InternetExplorerDriver
- IPhoneDriver
- OperaDriver
- SafariDriver
WebDriver 中有两种类型的等待,解释如下:
- 隐式等待 –用于在整个测试脚本的每个连续测试步骤或命令之间提供默认等待时间。因此,下一个测试步骤或命令只会在自上一个测试步骤或命令的执行完成后经过设置的默认等待时间(例如 30 秒)时执行。可应用于特定实例或多个实例。
- 显式等待 –用于暂停执行,直到出现特定条件或直到最长时间过去。仅适用于特定实例。
问题:你对Object Repository 的理解是什么?你如何在 Selenium 中创建一个?
答:术语对象存储库是指属于 AUT(被测应用程序)的 Web 元素及其定位符值的集合。只要脚本中需要一个元素,就可以从对象库中填充相应的定位器值。
它们不是在脚本中硬编码定位器,而是使用对象存储库存储在一个集中位置。通常,对象存储在作为对象存储库的 Selenium 中的 Excel 表中。
Selenium常见面试题和答案合集: 请解释如何使用其文本单击超链接。
答:以下命令使用 linkText() 方法查找指定元素,然后单击该元素将用户重定向到相应的网页:
driver.findElement(By.linkText(“Google”)).click();
另一个可用于相同目的的命令是:
driver.findElement(By.partialLinkText(“Goo”)).click();
在这个命令中,我们使用了 partialLinkText() 方法。上述命令根据提供的链接的子字符串 Goo 查找元素。
问题:Selenium 中 driver.close() 和 driver.quit() 命令之间最重要的区别是什么?
答: close() 方法关闭 WebDriver 当前访问的窗口。该命令既不需要任何参数,也不返回任何值。
与 close() 方法不同,quit() 方法用于关闭程序打开的所有窗口。与 close() 命令一样,quit() 方法不需要任何参数,也没有任何返回值类型。
问题:如何使用 Selenium 在列表中找到多个 Web 元素?
Selenium面试题解析:Selenium 提供了 WebElement 列表,用于在列表中查找多个 Web 元素。下面的代码片段演示了它的使用:
List elementList =
driver.findElements(By.xpath(“//div[@id=‘example’]//ul//li”));
Int listSize = elementList.size();
for (int i=0; i<listSize; i++)
{
serviceProviderLinks.get(i).click();
driver.navigate().back();
}
Selenium常见面试题有哪些:你能解释一下 Selenium 和 QTP 之间的区别吗?
回答:
- 可用性 – Selenium 是一种开源且免费使用的测试工具。另一方面,QTP 是一种许可的商业测试工具。
- 浏览器兼容性——虽然 QTP 仅支持 Chrome、Firefox 和 Internet Explorer,但 Selenium 可以与上述以及 Opera、Safari 和其他几个一起使用。
- 对象存储库——QTP 自动创建和维护一个对象存储库。然而,这不是 Selenium 的情况,因为在使用自动化测试工具时需要创建一个对象存储库。
- 编程语言支持——QTP支持的唯一编程语言是 VB,但 Selenium 提供对多种编程语言的支持,包括 C#、Java、Perl、Python 和 Ruby。
- 测试支持——Selenium 仅提供对 Web 应用程序的测试,而 QTP 为基于 Web 和基于 Windows 的应用程序提供测试支持。
- 供应商支持 – Selenium 不提供供应商支持,而 QTP 提供同样的支持。
问题:你将如何在 Selenium 中处理基于 Web 的弹出窗口?
答:WebDriver 允许通过警报界面处理基于 Web 的弹出窗口。一般语法是:
Alert alert = driver.switchTo().alert();
alert.accept();
共有 4 种方法可用于处理基于 Web 的弹出窗口,即:
- String getText() – 返回显示在警告框上的文本
- void accept() – 弹出窗口一出现就点击“确定”按钮
- void Dismiss() – 弹出窗口一出现就点击“取消”按钮
- void sendKeys(String stringToSend) – 在警告框中输入指定的字符串模式
问题:你能解释一下 Selenium 支持的各种类型的导航命令吗?
答:Selenium一共支持4个导航命令,列举如下:
- navigate().back() – 根据 Web 浏览器历史记录将用户带回上一个网页。不需要参数
- navigate().forward() – 将用户导航到 Web 浏览器历史记录中的下一个网页。不需要参数
- navigate().refresh() – 通过刷新当前网页重新加载所有 Web 元素。不需要参数
- navigate().to() – 让用户启动一个新的 Web 浏览器窗口并导航到作为参数给出的指定 URL
问题: 我们什么时候应该使用 findElement() 和 findElements()?
答案:findElement() – 用于在当前网页中查找与指定定位器值匹配的第一个元素。无论肯定匹配的数量如何,都只会获取第一个元素。它的一般语法是:
WebElement element = driver.findElements(By.xpath(“//div[@id=’some id’]//ul//li”));
findElements() – 用于在当前网页中查找与指定定位器值匹配的所有元素。所有匹配的元素都将被提取并存储在 WebElements 列表中。该方法的一般语法是:
List elementList = driver.findElements(By.xpath(“//div[@id=’some id’]//ul//li”));
问题:什么是 JUnit?解释各种 JUnit 注释。
答:JUnit 是 Apache 的一个基于 Java 的测试框架,它对 Selenium 进行了补充。各种JUnit注解列举如下:
- @After – 让系统知道每次测试方法完成时都会执行此方法
- @AfterClass - 让系统知道这个方法必须在任何测试方法之后执行一次
- @Before – 让系统知道这个方法将在每次测试方法开始执行之前执行
- @BeforeClass - 让系统知道这个方法必须在任何测试方法开始执行之前执行一次
- @Ignore - 以免系统知道该方法应被忽略,即不应执行
- @Test – 让系统知道这个方法是一个测试方法。在一个测试脚本中可以有多个测试方法
问题:请解释各种类型的测试自动化框架。
回答:
- 行为驱动的开发框架——允许以易于阅读和理解的格式为不同的专业人员(包括分析师、开发人员和测试人员)自动进行功能验证。
- 数据驱动的测试框架——帮助分离测试脚本逻辑和测试数据。允许将测试数据以键值对的形式存储在一些外部数据库中。这些键用于访问和填充测试脚本中的数据。
- 关键字驱动测试框架——它是数据驱动测试框架的扩展,除了将测试数据与测试脚本分离之外,关键字驱动测试框架还将一部分测试脚本代码存储在外部数据中文件。
- 库架构测试框架——工作原理是确定正确的步骤,然后将它们组合成库下的功能。这些函数在需要时在测试脚本中调用。
- 基于模块的测试框架——将每个被测应用程序划分为多个逻辑模块和隔离模块。为每个模块创建了一个不同的测试脚本。
- 混合测试框架 -提供属于不同类型测试框架的功能。这个想法是通过一个测试工具获得各种方法的所有好处。
问题:什么是Selenium?定义它的组成?
答:Selenium 是一套各种工具,明确用于自动化 Web 测试目的。它的组成有 Selenium IDE(集成开发环境)、WebDriver 和 RC 以及 Grid。
问题:Selenium 2.0 和 Selenium 3.0 与 Selenium 有何不同?
答:Selenium 2.0 将 Selenium RC 和 WebDriver 整合为一个工具,而 Selenium 3.0 是最新版本,有 Beta 1 和 Beta 2 更新。
问题:确定 Selenium 支持的各种测试类型?
答:Selenium 支持的各种测试类型包括:
- 功能性。
- 回归。
- CruiseCont.
- Hudson.
- Jenkins.
- 快速构建。
Selenium常见面试题和答案合集:Assertion 在 Selenium 中的作用是什么?
答:Selenium 中 Assertion 的作用是充当验证点。它有助于验证符合预期的应用程序状态。
问题:Selenium 中有哪些不同类型的断言?
答:Selenium 中的 Assertion 有以下三种类型:
- Assert.
- Verify.
- WaitFor.
问题:Selenium 有哪些技术挑战?
答:Selenium 有几个技术挑战,其中包括:
- 它仅支持基于 Web 的应用程序。
- 不支持位图比较。
- 寻求第三方工具用于报告目的。
- 与其他商业工具(例如 HP UFT)相比,供应商支持最少。
- 在 Selenium 中维护对象具有挑战性。
问题:Selenium 中的类型键和类型命令的区别?
Selenium面试题解析:Types Keys 使用 JavaScript 收集不同的值属性,而 Type Commands 模仿实际用户键入。
问题:如何区分 Assert 和 Verify 命令?
答:断言命令有助于检查元素是否在页面上。如果缺少所需元素,测试将失败并终止。验证命令有助于检查元素是否在页面上,但不会终止,但会继续执行所有命令。
问题:Selenium 的显着特点是什么?
答:Selenium 的显着特点包括:
- 它支持 C#、Python、Perl、JAVA 和 PHP。
- 它可以在各种操作系统上运行,包括 Mac OS、Linux 和 Windows。
- 它可以使用 Xpath、CSS 和 DOM 轻松定位元素。
- 它的开发者社区得到了 Google 的支持。
Selenium常见面试题有哪些:是什么让 Selenium 比 QTP 更好?
答:Selenium 的以下特性使其优于 QTP:
Selenium | QTP |
它是一个开源的 | 这是一个商业工具 |
它用于测试各种基于 Web 的应用程序。 | 它用于基于 Web 的应用程序和测试客户端-服务器应用程序。 |
它支持 Linux、Mac 和 Windows 上的 Safari、Opera 和 Firefox。 | 它仅支持 Windows 上的 Internet Explorer。 |
它支持不同的编程语言,如 Python、Perl 和 Ruby。 | 它仅支持 VB 脚本。 |
问题:在Selenium中定义参数?
答:Selenium 中有四个参数,其中包括:
- HOST。
- URL。
- 端口号。
- 浏览器。
问题:Selenium 中 set Speed() 和 Sleep() 方法的作用是什么?
答:Selenium 中 set Speed() 和 Sleep() 的作用是延迟执行速度。
问题:定义提升权限的浏览器?
回答:提升权限的浏览器充当代理注入,允许不同的网站执行通常不允许的操作。这些浏览器允许 Selenium 核心直接写入 AUT,从而读取和写入其内容,而无需通过 Selenium RC 服务器传递整个 AUT。
问:什么是 Borland Silk 测试工具?
答:Borland Silk 测试工具用于使用测试脚本语言的客户端-服务器应用程序。
问题:什么是 Selenium 测试工具?
答:Selenium 测试工具用于 Web 应用程序,并且可以灵活地用于多种语言,包括 JAVA、Perl、Ruby 和其他各种语言。
问:Borland Silk 测试工具和Selenium 测试工具的主要区别是什么?
答:Borland Silk Test Tool 和 Selenium Test Tool 的主要区别可以显示如下:
Borland Silk 测试工具 | Selenium测试工具 |
它不是免费的测试工具。 | 它是一个免费的测试工具。 |
它必须手动应用。 | 它是一个自动化工具。 |
它仅支持 Internet Explorer 和 Firefox。 | 它支持各种浏览器,包括 Internet Explorer、Firefox、Safari、Opera 和其他各种浏览器。 |
它专门用于测试脚本语言。 | 它可以用于测试各种语言的程序。 |
它可以应用于客户端-服务器应用程序。 | 它只能应用于 Web 应用程序。 |
问题:Webdriver 与 Selenium Server 相比有何优势?
答:Webdriver 不需要 Selenium Server,因为它使用了完全不同的技术。它提供了 Selenium RC 功能,可向后兼容 Selenium 1.0。此外,它还直接调用各种浏览器以实现自动化。同时,在 Selenium RC 的情况下,它需要 Selenium Server 将 Javascript 输入到浏览器中。
问题:Selenium WebDriver 的另一个名字是什么?
答:Selenium WebDriver 的另一个流行名称是 Selenium 2.0
问题:与 Selenium 1.0 相比,0f Selenium WebDriver 有哪些独特的特性?
答:Selenium WebDriver 与 Selenium 1.0 的不同之处包括:
- 它有助于处理多个框架、浏览器、窗口、警报和弹出窗口。
- 它有助于页面内导航。
- 它在页面上提供了拖放功能。
- 它应用了基于 Ajax 的用户界面 (UI) 元素。
- 它提供了多种浏览器测试工具,有助于改进 Selenium 1.0 早期不支持的浏览器的功能
问题:我们可以在 Web Driver 中处理颜色吗?
答:是的,我们可以使用 getCssValue(arg0) 函数在 Web Driver 中处理颜色。通过将“颜色”字符串作为参数发送,它将有助于获取颜色。
问题:我们可以存储一个值,它是一个文本框吗?
答:是的,我们可以存储一个值,它是一个使用 Web Driver 的文本框。我们可以应用 driver.findElement(By.id(“your Textbox”)).sendKeys(“your keyword”);
问题:我们可以在帧之间切换吗?
答:是的,我们可以使用 WebDrivers 在帧之间切换,它可以接受任何参数。
Selenium常见面试题有哪些:切换时可以考虑的三个参数是什么?
答:Switching 可以考虑的三个参数包括:
- 数字:这将通过从零开始的索引选择数字。
- 名称或 ID:这将按名称或 ID选择框架。
- 先前找到的 WebElement:这将有助于使用先前找到的 WebElement 来选择框架。
问题:Selenium WebDriver 有哪些例外?
Selenium面试题解析:Selenium WebDriver 有五种不同的例外,其中包括:
- TimeoutException。
- WebDriverException。
- NoAlertPresentException。
- NoSuchElementException。
- NoSuchWindowException。
问题:哪个是最好的 WebDriver 实现?
答:HTML 单元的最佳 WebDriver 实现是最快的,因为它不会在浏览器上执行测试,而是应用纯 HTTP 请求,这很快并且有助于启动浏览器和执行测试。
Selenium常见面试题和答案合集结论
好吧,这总结了最重要的 Selenium 面试问题和答案。仔细阅读这份清单肯定会帮助你为即将到来的 Selenium 面试做好准备。
你是否正在寻找更多 Selenium 面试问题?这是一门很好的课程,可以帮助你为即将到来的 Selenium 测试面试问题做准备:Selenium 自动化和敏捷面试的 QA 准备。