必读 30 个 Selenium 面试问题和答案:2022 年终极指南

已发表: 2021-01-04

您是否正在参加一个重要的面试,并想知道您将通过哪些Selenium 面试问题

我们创建了这个阅读最多的 Selenium 面试问题和答案指南,以帮助您了解问题的深度并自信地面对它。

如今,Web 应用程序正在兴起。 随着对 Web 应用程序的需求不断增长,也不可避免地需要测试这些 Web 应用程序。 这就是 Selenium 发挥作用的地方。 Selenium 是常用的自动化测试工具之一,可确保 Web 应用程序正常运行。 如果测试是手动完成的,它会占用几个工时,也会增加成本。

此外,由于它们是手动的,因此容易出错。 从长远来看,手动测试无济于事,因此,像 Selenium 这样的自动化测试正在行业中获得需求。 如果你正在追求你的自动化测试职业,并且即将在 Selenium 进行面试,那么这个博客就是为你准备的。

在这篇博客中,我们将在这里讨论最常见的 Selenium 面试问题。 这些既适用于初学者,也适用于有经验的 Selenium 面试问题。

Selenium 面试问答 2022

Q.1) 为什么选择 Selenium 而不是其他自动化测试工具?

Selenium 是开源的。 与市场上的其他自动化工具相比,它非常容易适应。 由于这个原因,许多公司选择 Selenium 自动化测试而不是其他传统方法。

Q.2) 列出 Selenium 相对于 TestComplete 和 QTP 等工具的一些优势。 另外,有什么缺点吗?

与 TestComplete 和 QTP 不同,Selenium 不需要许可证,很容易获得。 在线社区提供了大量支持。 与TestComplete和QTP相比,发布周期更小,反馈更及时。 此外,Selenium 也适用于 Mac、Linux 和 Windows。

相反,Selenium 要求开发人员具有较高的编码技能。 而 QTP 和 TestComplete 分别需要低到中等水平的编码技能。

Q.3) 各种 Selenium 版本升级发生了哪些变化?

在 Selenium 的第一个版本 Selenium v​​1 中,它仅包含三套工具,即 Selenium IDE、RC 和 Grid。 Webdriver 丢失。 仅在 Selenium 的第二个版本 Selenium v​​2 中引入了 Webdriver。 完成此操作后,Selenium RC 将不再使用。

您可以在市场上找到它们,但不提供支持。 Selenium 的下一个版本是 Selenium v​​3。 它由 Webdriver、IDE 和 Grid 组成。 它目前正在使用中。 现在也可以使用更新的版本 Selenium v​​4。

Selenium IDE 主要用于录制和回放。 Webdriver 用于使用编程接口测试动态 Web 应用程序。 网格用于在远程主机中进行测试。

您必须使用 IDE 来记录和回放测试。 WebDriver 用于使用编程接口测试活动的 Web 应用程序,而 Grid 用于在隔离的主机中部署测试。

Q.4) Selenium WebDriver 中的各种例外情况是什么?

就像任何其他编程语言一样,您也可以在 Selenium 中找到异常。 您可以在 Selenium WebDriver 中找到以下异常:

TimeoutException:当命令在指定时间内未执行操作时,您会收到此异常。

NoSuchElementException:当它在网页上找不到具有给定属性的元素时,会出现此异常。

ElementNotVisibleException:当一个元素在文档对象模型中可用但在网页上看不到时,您会收到此异常。

StaleElementException:当元素未附加到文档对象模型或被删除时,您会收到此异常。

Q.5) 解释 Selenium 异常测试

您期望在测试类中抛出的异常是异常测试。 如果您编写了一个打算抛出异常的测试用例,则必须使用 @test 注释并在参数中提及它会抛出哪个异常。 例如,

@Test(expectedException = NoSuchElementException.class)

Q.6) 项目中是否需要 Excel 表格? 是的,怎么样?

Excel 工作表在测试期间用作数据源。 此外,它还在执行数据驱动测试时存储数据集。 当excel表作为数据源时,可以存储:

应用程序 URL:开发人员可以提及执行测试的环境 URL。 例如,测试环境、开发环境、QA 环境、生产环境或暂存环境。

用户名和密码信息:Excel表格可以保护各种环境的密码用户名等访问凭证。 出于安全原因,开发人员可以加密和存储这些详细信息。

测试用例:开发人员可以制作一张表格,其中一列写测试用例名称,另一列写要执行或不执行。

如果您打算使用 Excel 表进行 DataDriven 测试,您可以轻松存储测试期间要执行的各种重复的信息。 例如,所有需要写入文本框中以在网页上进行测试的数据都可以存储在 Excel 工作表中。

Q.7) 什么是 POM? 列出它的优点?

POM 代表页面对象模型。 它是一种为 Web UI 元素创建对象存储库的设计模式。 应用程序中的每个网页都必须有自己对应的页面类,该类负责搜索该页面中的 WebElement,然后对其执行操作。

使用 Page 对象模型的优点是:

  • 它通过让开发人员将操作和 UI 流与验证分开来使代码可读。
  • 多个测试可以使用相同的对象存储库,因为它独立于测试用例。
  • 代码变得可重用。

Q.8) 什么是页面工厂?

页面工厂提供了一种增强的方法来通过有效地使用内存来执行页面对象模型,并且执行是使用面向对象的设计完成的。

POM 实现
使用页面工厂没有页面工厂
使用 By() 使用@FindBy()
不需要进口进口页面工厂
没有缓存存储缓存查找速度更快

页面工厂初始化页面对象的元素或实例化页面对象本身。 也可以生成元素的注释。 事实上,这是一种更好的方法,因为描述属性可能不足以将一个对象与另一个对象区分开来

如果在没有页面工厂的情况下使用 POM,而不必使用“FindElements”,@FindBy 用于查找 WebElement,而 initElements 用于从 Page Factory 类初始化 Web 元素。

@FindBy 可以接受 tagName、name、partialLinkText、linkText、id、className、css 和 xpath 等属性。

Q.9) 如何在 WebDriver 中实现同步? 或者,告诉我们不同类型的等待语句 Selenium Web Driver?

您可以在 Selenium Web 驱动程序中找到两个等待语句,即隐式等待和显式等待。

隐式等待命令 WebDriver 通过轮询 DOM 稍等。 一旦声明了隐式等待,它就会在 Web 驱动程序实例的整个生命周期中存在。 预设值为零。 如果您将其设置为大于零,则行为将根据驱动程序实现定期轮询 DOM。

显式等待命令执行等待一点,直到达到如下条件:

  • elementToBeClickable
  • PresenceOfElementLocated
  • 待选元素

阅读:春季面试问答

10) JavaScriptExecutor 有什么用?

您可以使用 JavaScriptExecutor 通过 Selenium Websriver 执行 JavaScript。 它是一个提供这种机制的接口。 它提供了诸如“executescript”和“executeAsyncScript”之类的方法来在当前选择的框架或窗口的条件下运行 JavaScript。 一个例子是:

JavascriptExecutor js = (JavascriptExecutor) 驱动程序;

js.executeScript(脚本,参数);

Q.11) 哪个函数可以让你在 Selenium 中使用 JavaScript 向下滚动页面?

函数 window.scrollBy() 帮助您在 Selenium 中使用 JavaScript 向下滚动页面。 例如:

((JavascriptExecutor) 驱动程序).executeScript(“window.scrollBy(0,500”);

Q.12) 你如何使用 Selenium 处理鼠标和键盘操作?

使用高级用户交互 API 处理特殊的鼠标和键盘操作。 它由执行这些事件所需的动作和动作类组成。 最常用的鼠标和键盘事件由 Action 类给出:

dragAndDrop():此事件在源元素的位置执行单击并按住,移动。

source, target():移动到目标元素的位置并释放鼠标。

clickAndHold():它点击鼠标的当前位置。

Q.13) 有哪些不同类型的 Selenium 框架?

各种类型的 Selenium 框架包括:

  • 关键字驱动框架:在这个框架中,操作和指令被写在一个单独的文件中,比如 Excel。
  • 数据驱动框架:在这个框架中,完整的测试数据取自一些外部源文件,如 XML、Excel、CSV 或其他一些数据库表。
  • 混合框架:该框架融合了关键字驱动框架和数据驱动框架。

Q.14) 列举几个作为各种 Selenium 框架的数据源的文件。

它们可以是 XML、Excel、CSV,甚至是文本文件。

Q.15) 什么是硒?

Selenese 是一组用于测试 Web 应用程序的 selenium 命令。 开发人员可以使用断言、操作和访问器。 断言用作检查点。 动作用于运行操作,访问器用于存储变量的值。

Q.16) 页面工厂和页面对象模型 (POM) 之间的主要区别是什么?

一个常见的硒面试问题。 页面工厂是一种在创建实例时初始化页面对象内的 Web 元素的方法。 另一方面,页面对象模型是一个描述网页并保存其功能的类。

Q.17) Selenium 是否支持处理弹出窗口?

不,Selenium 不支持处理弹出窗口。 警报是一个弹出窗口,在屏幕上显示警告消息。 您可以通过使用以下几种方法来实现此目的:

voiddismiss():当在alert框中点击取消按钮时,调用该方法。

void accept():当点击警报的“确定”按钮时,调用此方法。

String getText():如果要捕获警报消息,则必须调用此方法。

void sendKeys(String stringToSed):如果要向alert box发送一些信息,必须调用该方法。

阅读: React 面试问答

Q.18) 解释机器人类

Robot 类提供对键盘和鼠标设备的控制。

这些方法包括:

  • KeyPress():在您要按下某个键的事件上调用。
  • KeyRelease():在事件中调用以释放按下的键。
  • MouseMove():当您必须在 X 和 Y 坐标上移动鼠标指针时在事件中调用。
  • MousePress():在按下鼠标左键的事件中调用。
  • MouseMove():在释放鼠标按下的按钮时调用。

Q.19) 如何在 Selenium 中处理多个窗口?

窗口句柄是一个特殊的标识符,它具有所有窗口的地址。 它用作指向返回字符串中的值的窗口的指针。

  • get.windowhandle():获取当前窗口句柄。
  • get.windowhandles():获取所有打开的窗口的句柄。
  • 切换到:帮助切换窗口。
  • set:设置窗口句柄,字符串形式。
  • action:帮助在windows上执行某些动作。

Q.20) 什么是听众?

改变系统行为的接口在 Selenium 中称为监听器。 它们支持自定义日志和报告。 它们有两种:TestNG 侦听器和 Webdriver 侦听器。

Q.21) 解释断言和验证命令

断言:断言用于区分真实结果和预期结果。

验证:无论验证条件是真还是假,测试执行都不会暂停。

Q.22) 如何在网页上来回导航?

这是最常见的硒面试问题之一。

您可以使用以下方法来回导航。

driver.navigate.forward

driver.manage.navigate

driver.manage.back

driver.navigate.to(“网址”)

Q.23) 如何在 Selenium WebDriver 中发送 ALT/SHIFT/CONTROL 键?

通常使用 ALT、Shift 或 Control 等键,我们将它们与其他键组合以激活功能。 我们不能只点击它们。 我们需要定义两种方法来保持这些键,而以下键是

按下:keyUp(modifier_key) 和 keyDown(modifier_key)

参数:Modifier_key(keys.ALT 或 Keys.SHIFT 或 Keys.CONTROL)

Objective: 目的是在不释放修改键的情况下执行修改键。 以下交互可能会假设它一直处于按下状态。

参数:Modifier_key(keys.ALT 或 Keys.SHIFT 或 Keys.CONTROL)

目标:目的是执行密钥释放。

因此,通过混合使用这两种方法,我们可以捕获特定键的特殊功能。

Q.24) 我们如何在 Selenium WebDriver 中截屏?

TakeScreenshot 函数有助于在 Selenium Webdriver 中截取屏幕截图。 此外,您可以使用 getScreenshotAs() 方法保存屏幕截图。

文件 scrFile = ((TakeScreenshot)driver).getScreenshotAs(outputType.FILE);

Q. 25) 我们可以使用 Selenium 设置浏览器窗口的大小吗? 如果是,如何?

是的。 如果你想最大化浏览器窗口的大小,你需要使用代码

driver.manage().window().maximize();

如果您希望将当前窗口调整为特定尺寸,则必须使用 setSize() 方法。 例如:

System.out.println(driver.manage().window().getSize());

维度 d = 新维度(420,600);

driver.manage().window().setSize(d);

如果您希望将窗口设置为特定大小,则必须使用 window.resizeTo() 方法。

例如:

((JavascriptExecutor)driver).executeScript(“window.resizeTo(1024, 768);”);

Q.26) 如何从下拉列表中选择一个值? 如何处理下拉菜单?

你很可能会被问到一个关于下拉和选择值的问题,因为它也有点棘手和技术性。

您必须知道的最重要的细节是,要在 Selenium 中使用下拉菜单,使用 html 标签很重要:'select'。 如果不使用 select 标签,您将无法处理下拉菜单。 看看下面的代码:

<选择 id=”mySelect”>

<option value=”option1″>蛋糕</option>

<option value=”option2″>巧克力</option>

<option value=”option3″> 糖果</option>

</选择>

在上面的代码中,一个 HTML 'select' 标签用于定义一个下拉元素。 这里select标签的ID是myselect。 我们在下拉列表中提供了三个选项:蛋糕、巧克力和糖果。 您可以看到这些选项中的每一个都有一个附加的 value 属性。 例如,Cake 的值为 Option1,Chocolates 的值为 Option2,Candies 的值为 Option3。

要选择一个值,您需要:

使用 findelement() 识别“选择”html 元素

例子:

WebElement mySelectElement = driver.findElement(By.id(“mySelect”));

选择下拉=新选择(mySelectElement);

从该下拉元素中选择一个选项。

要从该下拉列表中选择一个选项,有以下三种方法:

dropdown.selectByVisibleText(“巧克力”); → 通过看到的文本选择一个选项。

dropdown.selectByIndex(“1”); → 使用该选项的索引号选择一个选项。

dropdown.selectByValue(“option2”); → 使用该选项的值选择一个选项。

请注意,在所有情况下,都会从下拉列表中选择“巧克力”选项。 第1点和第3点很明显,第2点; 我们说“1”是因为索引从零开始。

阅读:顶级 Nagios 面试问题和答案

Q.27) 你如何跳到点击链接后打开的新标签页?

单击网页上的链接时,您需要使用 switchTo() 命令来更改 Webdriver 的焦点。 示例:driver.switchTo().window();

其中 'windowName' 是窗口的名称,您要将焦点切换到。

如果您没有窗口的名称,您可以使用 driver.getWindowHandle() 命令获取由 WebDriver 启动的所有窗口的名称。 请记住,它永远不会为您提供 Webdriver 未启动的那些窗口的名称。

获得名称后,您需要通过循环运行才能到达该窗口。 这是一个例子:

字符串句柄= driver.getWindowHandle();

for (字符串句柄: driver.getWindowHandles())

{

driver.switchTo().window(句柄);

}

Q.28) 如何在 Selenium WebDriver 中上传文件?

命令 element.send_keys(file path) 用于在 Selenium Webdriver 中上传文件。 但在此之前,您必须使用 html 标签:'input',其中属性类型应为 'file'。 这是一个更好地理解它的示例:

<input type=”file” name=”my_uploaded_file” size=”50″ class=”pole_plik”>

element = driver.find_element_by_id(”my_uploaded_file”)

element.send_keys(“C:myfile.txt”)

Q.29) testng.xml 的重要性是什么?

如果你正在面试 Selenium,你肯定知道测试的重要性。 Selenium 不支持报告的生成以及测试用例管理。 因此,我们将 TestNG 框架与 Selenium 一起使用。 与 Junit 相比,它更先进,并且更容易实现注释,使 TestNG 框架成为 Selenium Webdriver 的选择。

通过从 testing.xml 文件中获取命令,您可以在 TestNG 中定义测试套件和测试类的分组。 它在一个 XML 文件中表示,而不是在测试源代码中的测试套件中,因为该套件是一个执行功能。 测试套件是一组或一组测试用例。

testng.xml 文件应包含您希望作为该执行流的一部分执行的所有方法和类的名称。

使用 testng.xml 文件的一些优点是:

  • 它允许执行来自多个类的多个测试用例
  • 它允许在组中执行测试用例,其中单个测试可以属于多个组。
  • 它允许并行执行。

Q. 30) 在 TestNG 中解释 DataProviders。 是否可以为多个函数和类调用单个数据提供者方法?

高级硒面试题之一。 DataProvider 是 TestNG 的一项功能,使开发人员能够编写 DataDriven 测试。 它支持 DataDriven 测试,这意味着相同的测试方法可以使用不同的数据集多次运行。 DataProvider 只是一种将参数传递给测试方法的方法。

@DataProvider 是一种为测试方法提供数据的方法。 带注释的方法必须返回一个 Object[],其中每个 Object[] 都可以分配给测试方法的参数列表。

是的。 可以为多个函数和类调用单个数据提供者方法。 通过在单独的类中声明 DataProvider 然后在多个类中再次使用它,可以在多个函数和类中使用相同的 DataProvider。

Q. 31) TestNG 有什么特点?

  • 注释前后
  • 基于 XML 的测试配置
  • 多线程执行
  • 开放式 API
  • 更好的报告
  • 数据驱动的测试
  • 依赖组。
  • 依赖方法

从世界顶级大学获得软件开发课程获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。

结论

Selenium 面试问答指南即将结束,我们希望这可以帮助您找到工作。 Selenium 针对有经验的面试问题更具技术性,但由于工作竞争激烈,为面试做好充分准备总是很好。

如果您有兴趣学习 Selenium、DevOps 以及有关全栈开发的所有内容,请查看 IIIT-B 和 upGrad 的全栈软件开发计划中的执行 PG 计划。

为未来的职业做准备

立即申请软件工程硕士