Selenium基于用于测试目的的自动化Web应用程序, 但是它当然不仅限于此。基于Web的管理任务也可以自动化。它使浏览器自动化
Selenium得到了一些领先的浏览器供应商的支持, 这些供应商已采用Selenium使其成为其浏览器的重要组成部分。它也是许多其他浏览器自动化工具, API和框架中的核心技术。
下面列出了最常见的Selenium面试问题及其答案。
基本水平-Selenium面试问题
1)什么是自动化测试或自动化测试?
自动化测试使用自动化工具来编写和执行测试用例, 执行自动化测试套件无需人工参与。测试人员更喜欢自动化工具来编写测试脚本和测试用例, 然后分组到测试套件中。
自动化测试使你能够使用专用工具来自动执行手动设计的测试用例, 而无需任何人工干预。自动化测试工具可以访问测试数据, 控制测试的执行并将实际结果与预期结果进行比较。因此, 生成了被测系统的详细测试报告。
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不仅是一个工具, 而且是一套软件, 每个工具都有不同的方法来支持自动化测试。它由四个主要部分组成, 其中包括:
- Selenium综合开发环境(IDE)
- Selenium遥控器(现已弃用)
- 网络驱动器
- 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的应用程序的概念。有两种类型的等待:
- 隐式等待
- 显式等待
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://srcmini02.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://srcmini02.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://srcmini02.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面试问题
春季面试问题
评论前必须登录!
注册