个性化阅读
专注于IT技术分析

精品推荐!Selenium面试题合集详解

Selenium面试题

Selenium基于用于测试目的的自动化Web应用程序, 但是它当然不仅限于此。基于Web的管理任务也可以自动化。它使浏览器自动化

Selenium得到了一些领先的浏览器供应商的支持, 这些供应商已采用Selenium使其成为其浏览器的重要组成部分。它也是许多其他浏览器自动化工具, API和框架中的核心技术。

下面列出了最常见的Selenium面试问题及其答案。

基本水平-Selenium面试问题

1)什么是自动化测试或自动化测试?

自动化测试使用自动化工具来编写和执行测试用例, 执行自动化测试套件无需人工参与。测试人员更喜欢自动化工具来编写测试脚本和测试用例, 然后分组到测试套件中。

自动化测试使你能够使用专用工具来自动执行手动设计的测试用例, 而无需任何人工干预。自动化测试工具可以访问测试数据, 控制测试的执行并将实际结果与预期结果进行比较。因此, 生成了被测系统的详细测试报告。

Selenium面试题

2)自动化测试的优势是什么?

自动化测试的一些基本优点如下。

  • 自动化测试支持对应用程序进行功能和性能测试。
  • 它支持重复测试用例的执行。
  • 它有助于并行执行。
  • 它有助于测试大型测试矩阵。
  • 由于没有人为错误的机会, 因此可以提高准确性。
  • 节省时间和金钱。

3)列举一些用于功能自动化的常用自动化测试工具。

以下是用于功能自动化的十大使用过的自动化测试工具的列表。

  • Teleric Test Studio, 由Teleric开发。
  • 测试向导
  • HPE统一功能测试(HP-UFT先前为QTP)
  • 托斯卡测试服
  • HP提供的Quick Test Professional。
  • IBM提供的Rational Robot。
  • 编码的UI, 由Microsoft提供。
  • Selenium, 开源。
  • 自动运行, 开源。

4)列出一些用于非功能自动化的常用自动化测试工具。

以下是用于非功能自动化的一些常用自动化测试工具的列表。

  • 由HP提供的Load Runner。
  • JMeter, 由Apache提供。
  • Burp Suite, 由PortSwigger提供。
  • Acunetix, 由Acunetix提供。

5)什么是Selenium?

Selenium是用于软件测试的便携式框架。 Selenium工具可借助回放工具来编写功能测试, 而无需学习测试脚本语言。

Selenium是使用最广泛的开源Web UI(用户界面)自动化测试套件之一。 Jason Huggins于2004年开发了Selenium, 作为Thought Works的内部工具。 Selenium支持跨不同浏览器, 平台和编程语言的自动化。


6)Selenium有哪些不同成分?

Selenium不仅是一个工具, 而且是一套软件, 每个工具都有不同的方法来支持自动化测试。它由四个主要部分组成, 其中包括:

  1. Selenium综合开发环境(IDE)
  2. Selenium遥控器(现已弃用)
  3. 网络驱动器
  4. Selenium网格

7)列出Selenium支持的编程语言, 浏览器和操作系统的名称。

Selenium支持各种操作系统, 浏览器和编程语言。以下是列表:

  • 编程语言:C#, Java, Python, PHP, Ruby, Perl, JavaScript。
  • 操作系统:Android, iOS, Windows, Linux, Mac, Solaris。
  • 浏览器:Google Chrome, Mozilla Firefox, Internet Explorer, Edge, Opera, Safari等。

8)各种Selenium版本中有哪些重大更改/升级?

Seleniumv1.0:

  • 1.0版是Selenium的最初版本。
  • 它包括三个工具:Selenium IDE, Selenium RC和Selenium Grid。

Seleniumv2.0:

  • 引入了Selenium WebDriver来代替版本” 2.0″中的Selenium RC。
  • 随着WebDriver的出现, RC被弃用并移至旧版软件包。

Seleniumv3:

  • 最新版本的Selenium 3具有新增的功能。
  • 它包括Selenium IDE, Selenium WebDriver和Selenium Grid。

9)列出Selenium支持的一些测试类型。

我们可以通过Selenium实现的不同类型的测试。

  • 功能测试
  • 回归测试
  • 健全性测试
  • 烟雾测试
  • 响应测试
  • 跨浏览器测试
  • UI测试(黑匣子)
  • 整合测试

10)什么是Selenium IDE?

Selenium IDE被实现为Firefox扩展, 可在测试脚本上提供记录和回放功能。它允许测试人员以多种语言(例如HTML, Java, Ruby, RSpec, Python, C#, JUnit和TestNG)导出记录的脚本。

Selenium IDE的范围有限, 并且生成的测试脚本不是很健壮和可移植。


11)你对Selenese的意思是什么?

Selenium命令(也称为” Selenese”)是Selenium中运行测试的一组命令。例如, 命令-打开(URL);在指定的浏览器中启动所需的URL, 并接受相对URL和绝对URL。

一串Selenium命令(Selenium)一起被称为测试脚本。


12)在Selenium中定位Web元素有哪些不同的方法?

在Selenium中, 借助定位器识别并定位Web元素。定位器指定目标位置, 该目标位置在Web应用程序的上下文中唯一定义Web元素。因此, 为了准确准确地识别Web元素, 我们在Selenium中使用了不同类型的定位器:

  • ID
  • 班级名称
  • 名称
  • 标签名称
  • 连结文字
  • PartialLinkText
  • Xpath
  • CSS选择器
  • 判决

13)Selenium中提供几种类型的WebDriver API?

用于自动执行浏览器的WebDriver API的列表包括:

  • 安卓驱动
  • ChromeDriver
  • EventFiringWebDriver
  • 火狐浏览器
  • HtmlUnitDriver
  • InternetExplorerDriver
  • iPhone驱动程序
  • iPhone模拟器驱动程序
  • RemoteWebDriver

14)列出一些可以与Selenium集成以实现连续测试的自动化工具。

Selenium可用于自动化功能测试, 并可与Maven, Jenkins和Docker等自动化测试工具集成以实现连续测试。它还可以与TestNG和&JUnit等工具集成, 以管理测试用例和生成报告。


15)Selenium中的断言是什么意思?

该断言用作验证点。它验证应用程序的状态是否符合预期。断言的类型为”断言”, “验证”和” waitFor”。


16)解释断言和验证命令之间的区别?

断言:断言命令检查给定条件是对还是错。如果条件为true, 则程序控件将执行测试的下一阶段;如果条件为false, 则将停止执行, 并且将不会执行任何操作。

验证:Verify命令还检查给定条件是对还是错。它不会停止程序的执行, 即验证过程​​中的任何失败都不会停止执行, 并且所有测试阶段都将执行。


17)XPath是什么意思?

XPath也定义为XML路径。它是用于查询XML文档的语言。这是在Selenium中定位元素的重要方法。 XPath由路径表达式以及一些条件组成。在这里, 我们可以轻松编写XPath脚本/查询来定位网页中的任何元素。开发它是为了允许XML文档的导航。它在导航时考虑的关键因素是选择单个元素, 属性或XML文档的其他部分以进行特定处理。它还可以生产可靠的定位器。有关XPath的其他几点如下。

  • XPath是一种用于在XML文档中定位节点的语言。
  • 当你没有要查找的元素的合适的id或name属性时, 可以将XPath用作替代对象。
  • XPath提供了以下定位策略:
    • XPath绝对
    • XPath属性

18)解释XPath Absolute和XPath属性。

XPath绝对:

  • XPath Absolute使用户能够提及从根HTML标记到特定元素的完整XPath位置。
  • 语法://html/body/tag1[index]/tag2[index]/…/tagN[index]
  • 例如:// html / body / div [2] / div / div [2] / div / div / div / fieldset / form / div [1] / input [1]

XPath属性:

  • 当你没有要查找的元素的合适的id或name属性时, 始终建议使用XPath Attributes。
  • 语法:// htmltag [@ attribute1 =’value1’and @ attribute2 =’value2′]
  • 示例:// input [@ id =’passwd’和@ placeholder =’password’]

19)XPath中” /”和” //”之间有什么区别?

单斜杠” /”:单斜杠用于创建具有绝对路径的XPath。

双斜杠” //”:双斜杠用于创建具有相对路径的XPath。


20)Selenium中使用什么不同类型的注释?

可以使用的JUnit注释是:

  • 测试
  • 之前
  • 忽视
  • 课前
  • 下课以后
  • 运行方式

21)WebDriver支持哪些移动测试驱动程序?

WebDriver支持的”移动测试驱动程序”是:

  • 安卓驱动
  • Iphone驱动程序
  • OperaMobileDriver

22)Selenium WebDriver支持哪些流行的编程语言来编写测试用例?

Selenium WebDriver支持以下语言来编写测试用例。

  • Java
  • 的PHP
  • python
  • C#
  • Ruby
  • 佩尔

23)输入键和输入命令有什么区别?

在大多数情况下, TypeKeys()会触发JavaScript事件, 而.type()不会。


24)” type”和” typeAndWait”命令之间有什么区别?

” type”命令用于在软件Web应用程序的文本框中键入键盘键值。它也可以用于选择组合框的值, 而在键入完成并开始重新加载软件网页时使用” typeAndWait”命令。此命令将等待软件应用程序页面重新加载。如果键入时没有页面重新加载事件, 则必须使用简单的” type”命令。


25)findElement()和findElements()有什么区别?

findElement():用于使用给定的”定位机制”在当前页面中查找第一个元素。它返回一个WebElement。

findElements():它使用给定的”定位机制”来查找当前页面内的所有元素。它返回Web元素列表。


26)等待什么?Selenium中有几种类型的等待?

Selenium Webdriver引入了等待基于AJAX的应用程序的概念。有两种类型的等待:

  1. 隐式等待
  2. 显式等待

27)隐式等待的主要缺点是什么?

隐式等待的主要缺点是它会降低测试性能。

隐式等待的另一个缺点是:

假设你将等待限制设置为10秒, 并且元素在11秒内出现在DOM中, 则测试将失败, 因为你告诉它等待最多10秒。


28)什么是Selenium网格?

Selenium Grid可以帮助你将测试分布在多台计算机上, 并且可以同时分布在所有计算机上。因此, 你可以使用相同的文本脚本在Windows的Internet Explorer和Mac的Safari上执行测试。它减少了测试执行的时间, 并提供了快速的反馈。

进阶水平-Selenium面试问题

29)我们如何在Selenium WebDriver中启动不同的浏览器?

我们必须创建该特定浏览器的驱动程序的实例。

WebDriver driver =newFirefoxDriver();

在这里, ” WebDriver”是一个接口, 我们正在创建WebDriver类型的引用变量” driver”, 使用” FireFoxDriver”类实例化。


30)编写代码段以在WebDriver中启动Firefox浏览器。

public class FirefoxBrowserLaunchDemo {

public static void main(String[] args) {

//Creating a driver object referencing WebDriver interface
WebDriver driver;

//Setting webdriver.gecko.driver property
System.setProperty("webdriver.gecko.driver", pathToGeckoDriver + "\\geckodriver.exe");

//Instantiating driver object and launching browser
driver = newFirefoxDriver();

//Using get() method to open a webpage
driver.get("http://srcmini.com");

//Closing the browser
driver.quit();

    }

}

31)编写代码段以在WebDriver中启动Chrome浏览器。

public class ChromeBrowserLaunchDemo {

public static void main(String[] args) {

//Creating a driver object referencing WebDriver interface
WebDriver driver;

//Setting the webdriver.chrome.driver property to its executable's location
System.setProperty("webdriver.chrome.driver", "/lib/chromeDriver/chromedriver.exe");
	
//Instantiating driver object
driver = newChromeDriver();

//Using get() method to open a webpage
driver.get("http://srcmini.com");

//Closing the browser
driver.quit();

    }

}

32)编写代码段以在WebDriver中启动Internet Explorer浏览器。

public class IEBrowserLaunchDemo {

public static void main(String[] args) {

//Creating a driver object referencing WebDriver interface
WebDriver driver;

//Setting the webdriver.ie.driver property to its executable's location
System.setProperty("webdriver.ie.driver", "/lib/IEDriverServer/IEDriverServer.exe");
	
//Instantiating driver object
driver = newInternetExplorerDriver();

//Using get() method to open a webpage
driver.get("http://srcmini.com");

//Closing the browser
driver.quit();

    }

}

33)编写代码段以右键单击WebDriver中的元素。

我们将使用Action类来生成用户事件, 例如右键单击WebDriver中的元素。

Actions action = newActions(driver);
WebElement element = driver.findElement(By.id("elementId"));
action.contextClick(element).perform();

34)编写代码段以在WebDriver中执行鼠标悬停。

Actions action = newActions(driver);
WebElement element = driver.findElement(By.id("elementId"));
action.moveToElement(element).perform();

35)如何在WebDriver中执行拖放操作?

用于执行拖放操作的代码段:

//WebElement on which drag and drop operation needs to be performed
WebElementfromWebElement = driver.findElement(By Locator of fromWebElement);

//WebElement to which the above object is dropped
WebElementtoWebElement = driver.findElement(By Locator of toWebElement);

//Creating object of Actions class to build composite actions
Actions builder = newActions(driver);

//Building a drag and drop action
Action dragAndDrop = builder.clickAndHold(fromWebElement)
		     .moveToElement(toWebElement)
		     .release(toWebElement)
	     .build();

//Performing the drag and drop action
dragAndDrop.perform();

36)在WebDriver中刷新网页有哪些不同的方法?

Webdriver中有多种刷新页面的方法。

1.使用driver.navigate命令-

driver.navigate().refresh();

2.将driver.getCurrentUrl()与driver.get()命令一起使用-

driver.get(driver.getCurrentUrl());

3.将driver.getCurrentUrl()与driver.navigate()命令一起使用-

driver.navigate().to(driver.getCurrentUrl());

4.使用sendKeys命令在任何文本框中按F5键-

driver.findElement(By textboxLocator).sendKeys(Keys.F5);

5.使用sendKeys命令传递F5键的ascii值, 即” \ uE035″-

driver.findElement(By textboxLocator).sendKeys("\uE035");

37)编写代码段以在浏览器历史记录中来回浏览吗?

浏览浏览器历史记录:

driver.navigate().back();

向前浏览浏览器历史记录:

driver.navigate().forward();

38)如何在WebDriver中调用应用程序?

driver.get("url"); or
driver.navigate().to("url");

杂项问题-Selenium面试问题。

39)自动化测试有什么好处?

自动化测试的好处如下。

  • 它允许执行重复的测试用例
  • 它可以并行执行
  • 自动化测试鼓励无人值守执行
  • 它提高了准确性。因此, 它减少了人为错误
  • 节省时间和金钱。

40)我们如何获取网络元素的文本?

Get命令用于获取指定Web元素的内部文本。 get命令不需要任何参数, 但是它返回字符串类型的值。它也是从网页验证消息, 标签和错误等的广泛使用的命令之一。

语法

String Text = driver.findElement(By.id("Text")).getText();

41)如何在下拉菜单中选择值?

我们使用WebDriver的Select类在下拉列表中选择值。

语法

selectByValue:

Select selectByValue = new Select(driver.findElement(By.id("SelectID_One")));
selectByValue.selectByValue("greenvalue");

selectByVisibleText:

Select selectByVisibleText = new Select (driver.findElement(By.id("SelectID_Two")));
selectByVisibleText.selectByVisibleText("Lime");
Select selectByIndex = new Select(driver.findElement(By.id("SelectID_Three")));
selectByIndex.selectByIndex(2);

42)导航命令有哪些不同类型?

导航命令如下。

navigation()。back()

上面的命令不需要任何参数, 并将用户带回到上一个网页。

例子

driver.navigate().back();

navigation()。forward()

上面的命令允许用户参考浏览器的历史记录导航到下一个网页。

例子

driver.navigate().forward();

navigation()。refresh()

navigation()。refresh()命令允许用户通过重新加载所有Web元素来刷新当前网页。

例子

driver.navigate().refresh();

导航()

navigation()。to()命令允许用户启动新的Web浏览器窗口并导航到指定的URL。

例子

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

43)如何在WebDriver中处理框架?

内联框架缩写为iframe。它用于在当前文档中插入另一个文档。这些文档可以是HTML文档, 也可以只是网页和嵌套网页。

按ID选择iframe

driver.switchTo().frame("ID of the frame");

使用tagName定位iframe

driver.switchTo().frame(driver.findElements(By.tagName("iframe").get(0));

使用索引定位iframe

框架(索引)

driver.switchTo().frame(0);

框架(框架名称)

driver.switchTo().frame("name of the frame");

框架(WebElement元素)

选择父窗口

driver.switchTo().defaultContent();

44)是否有用于.NET的HtmlUnitDriver?

要使用HtmlUnit, 请首先使用RemoteWebDriver并将其传递给所需的功能。

IWebDriver driver
= new RemoteWebDriver(DesiredCapabilities.HtmlUnit())

要运行Firefox实施, 请使用

IWebDriver driver
= new RemoteWebDriver(DesiredCapabilities.HtmlUnitWithJavaScript())

45)如何通过某个代理从浏览器重定向浏览?

Selenium通过PROXY类促进了从代理重定向浏览。看下面的例子。

例子

String PROXY = "199.201.125.147:8080";
org.openqa.selenium.Proxy proxy = new.org.openqa.selenium.Proxy();
proxy.setHTTPProxy(Proxy)
 .setFtpProxy(Proxy)
 .setSslProxy(Proxy)
DesiredCapabilities cap = new DesiredCapabilities();
cap.setCapability(CapabilityType.PROXY, proxy);
WebDriver driver = new FirefoxDriver(cap);

46)什么是POM(页面对象模型)?它有什么优势?

页面对象模型是用于为Web UI元素创建对象目录的设计模式。每个网页都必须具有其页面类。页面类负责在网页中查找WebElement, 然后对WebElement执行操作。

使用POM的好处如下。

  • 它简化了UI中来自Verification的单独操作和流程, 提高了代码的可读性
  • 多个测试可以使用相同的对象存储库, 因为对象存储库与测试用例无关。
  • 代码的可重用性

47)如何在WebDriver中捕获屏幕截图?

以下是在WebDriver中捕获屏幕截图的程序。

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class TakeScreenshot {
WebDriver drv;
@Before
public void setUp() throws Exception {
driver = new FirefoxDriver();
drv.get("https://google.com");
}
@After
public void tearDown() throws Exception {
drv.quit();
}

@Test
public void test() throws IOException {
//capture the screenshot
File scrFile = ((TakeScreenshot)drv).getScreenshotAs(OutputType.FILE);
// paste the screenshot in the desired location
FileUtils.copyFile(scrFile, new File("C:\\Screenshot\\Scr.jpg"))
}
}

48)如何使用Selenium在文本框中键入文本?

sendKeys(“要输入的字符串”)用于在文本框中输入字符串。

语法

WebElement username = drv.findElement(By.id("Email"));
// entering username
username.sendKeys("sth");

49)如何查找屏幕上是否显示了元素?

WebDriver允许用户检查Web元素的可见性。这些Web元素可以是按钮, 单选按钮, 拖放, 复选框, 框, 标签等, 可与以下方法一起使用。

  • 被展示()
  • isSelected()
  • isEnabled()

语法

isDisplayed():
boolean buttonPresence = driver.findElement(By.id("gbqfba")).isDisplayed();
isSelected():
boolean buttonSelected = driver.findElement(By.id("gbqfba")).isSelected();
isEnabled():
boolean searchIconEnabled = driver.findElement(By.id("gbqfb")).isEnabled();

50)如何使用linkText单击超链接?

driver.findElement(By.linkText("Google")).click();

上面的命令使用链接文本搜索元素, 然后单击该元素, 因此用户将被重定向到相应的页面。

以下命令可以访问前面提到的链接。

driver.findElement(By.partialLinkText("Goo")).click();

上面给出的命令根据括号中提供的链接的子字符串搜索元素。然后, partialLinkText()找到具有指定子字符串的Web元素, 然后单击它。


数据库面试问题
SQL面试题
Android面试题
MySQL面试问题
Java OOP面试问题
Java字符串和异常问题
JDBC面试问题
JSP面试问题
休眠面试问题

工作/人力资源面试问题

PL / SQL面试问题

Oracle面试问题

SQL Server面试问题

Java基础面试问题

Java多线程问题

Java Collection面试题

Servlet面试问题

春季面试问题

赞(0) 打赏
未经允许不得转载:srcmini » 精品推荐!Selenium面试题合集详解
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏