精品推荐!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 = http://www.srcmini.com/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)导航命令有哪些不同类型?
导航命令如下。
【精品推荐!Selenium面试题合集详解】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面试问题
春季面试问题

    推荐阅读