zl程序教程

您现在的位置是:首页 >  其他

当前栏目

Selenium面试题

面试题 selenium
2023-09-11 14:15:55 时间

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

自动化测试使用自动化工具来编写和执行测试用例,执行自动化测试套件不需要人工参与。测试人员更喜欢自动化工具来编写测试脚本和测试用例,然后组合成测试套件。
自动化测试允许使用专门的工具来自动执行手动设计的测试用例,而无需任何人工干预。自动化测试工具可以访问测试数据,控制测试的执行并将实际结果与预期结果进行比较。因此,生成被测系统的详细测试报告。

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

自动化测试的一些基本优势如下:

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

3、用于功能自动化的常用自动化测试工具有哪些?

功能自动化使用的前 10 大自动化测试工具列表如下:

  • 由 Teleric 开发的Teleric Test Studio。
  • TestingWhiz
  • HPE Unified Functional Testing (HP - UFT 以前的 QTP)
  • Tosca Testsuite
  • Watir
  • Quick Test Professional(由 HP 提供)。
  • Rational Robot(由 IBM 提供)。
  • Coded UI(由 Microsoft 提供)。
  • Selenium(开源)。
  • Auto It(开源)。

4、用于非功能自动化的常用自动化测试工具有哪些?

一些常用的非功能自动化自动化测试工具列表如下:

  • Load Runner,由 Hp 提供。

  • 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 Remote Control(现已弃用)
  • WebDriver
  • Selenium Grid

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版本有哪些重大变化/升级?

Selenium v1.0:

  • 1.0 版是 Selenium 的初始版本。

  • 它包括三个工具:Selenium IDE、Selenium RC 和 Selenium Grid。
    Selenium v2.0:

  • Selenium WebDriver 在“2.0”版本中取代了 Selenium RC。

  • 随着 WebDriver 的出现,RC 被弃用并移至遗留包。
    Selenium v3:

  • 最新版本的 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、Selenium Selenese是什么?

Selenium 命令,也称为“Selenese”,是 Selenium 中用于运行测试的一组命令。例如命令——打开(URL);在指定的浏览器中启动所需的 URL,它接受相对和绝对 URL。
一系列 Selenium 命令 (Selenese) 一起称为测试脚本。

12、在Selenium中定位Web元素有哪些方法?

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

  • ID
  • ClassName
  • Name
  • TagName
  • LinkText
  • PartialLinkText
  • Xpath
  • CSS Selector
  • DOM

13、Selenium中有多少种类型的WebDriver API可用?

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

  • AndroidDriver
  • ChromeDriver
  • EventFiringWebDriver
  • FirefoxDriver
  • HtmlUnitDriver
  • InternetExplorerDriver
  • iPhoneDriver
  • iPhoneSimulatorDriver
  • RemoteWebDriver

14、可以与Selenium集成以实现持续测试的自动化工具有哪些?

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

15、Selenium中的断言是什么?

断言用作验证点。它验证应用程序的状态是否符合预期。断言的类型是:“assert”、“verify”和“waitFor”。

16、断言和验证命令的区别是什么?

断言和验证命令的区别如下:

断言:断言命令检查给定条件是真还是假。如果条件为真,程序控制将执行下一阶段的测试,如果条件为假,则停止执行,不执行任何操作。
验证:验证命令还检查给定条件是真还是假。它不会停止程序执行,即验证过程中的任何失败都不会停止执行,所有测试阶段都会执行。

17、XPath是什么?

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

  • XPath 是一种用于在 XML 文档中定位节点的语言。

  • 当没有适合要定位的元素的 id 或 name 属性时,可以使用 XPath 作为替代。

  • XPath 提供定位策略,例如:

    XPath 绝对
    XPath 属性

18、XPath Absolute和XPath属性是什么?

XPath Absolute:

  • 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 属性。
  • 语法: //htmltag[@attribute1=’value1’ and @attribute2=’value2’]
  • 示例: //input[@id=’passwd’ and @placeholder=’password’]

19、XPath中“/”和“//”有什么区别?

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

20、键入键和键入命令有什么区别?

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

21、“type”和“typeAndWait”命令有什么区别?

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

22、findElement()和findElements()有什么区别?

findElement():用于使用给定的“定位机制”在当前页面中查找第一个元素。它返回一个 WebElement。
findElements():它使用给定的“定位机制”来查找当前页面内的所有元素。它返回一个 Web 元素列表。

23、Selenium中有多少种等待类型?

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

  • 隐式等待
  • 显式等待

24、Selenium中隐式等待的主要缺点是什么?

隐式等待的主要缺点是它会降低测试性能。
隐式等待的另一个缺点是:假设你将等待限制设置为 10 秒,并且元素在 11 秒内出现在 DOM 中,您的测试将失败,因为您告诉它最多等待 10 秒。

25、Selenium Grid/网格是什么?

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

26、如何在Selenium WebDriver中启动不同的浏览器?

我们需要创建该特定浏览器的驱动程序实例。例如:

WebDriver driver = newFirefoxDriver();

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

27、请编写代码片段以在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("https://www.baidu.com");  

        //Closing the browser  
        driver.quit();  
    }
}

28、编写代码片段以在WebDriver中执行右键单击元素?

我们将使用 Action 类来生成用户事件,例如右键单击 WebDriver 中的元素。参考代码片段:

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

29、编写代码片段以在WebDriver中执行鼠标悬停?

代码实现如下:

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

30、在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();

31、在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");

32、编写代码片段以在浏览器历史记录中前后导航?

返回浏览器历史记录:

driver.navigate().back();

在浏览器历史记录中向前导航:

driver.navigate().forward();

33、怎样才能得到一个网页元素的文本?

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

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

34、如何在下拉列表中选择值?

使用 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);

35、有哪些不同类型的导航命令?

navigate().back()

上面的命令不需要参数,将用户带回到上一个网页,示例:

driver.navigate().back();

navigate().forward()

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

driver.navigate().forward();

navigate().refresh()

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

driver.navigate().refresh();

navigate().to()

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

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

36、如何处理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,

frame(index)示例:

driver.switchTo().frame(0);

frame(Name of Frame)示例:

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

frame(WebElement element) 选择父窗口

driver.switchTo().defaultContent();

37、.NET是否有HtmlUnitDriver?

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

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

要运行 Firefox 实现,请使用

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

38、如何通过某些代理从浏览器重定向浏览?

Selenium 使用 PROXY 类促进从代理重定向浏览。看下面的例子:

String PROXY = "192.168.10.xx: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);

39、什么是POM(页面对象模型)?它的优点是什么?

页面对象模型是一种用于为 Web UI 元素创建对象目录的设计模式。每个网页都需要有其页面类。page类负责在网页中查找WebElements,然后对WebElements进行操作。

使用 POM 的好处如下:

它有助于在 UI 中与 Verification 分开操作和流程 - 提高代码可读性
多个测试可以使用同一个对象存储库,因为对象存储库独立于测试用例。
代码的可重用性

40、如何在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://www.baidu.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\\Demo.jpg"))  
    }  
}

41、如何使用Selenium在文本框中输入文本?

sendKeys(“String to be enter”) 用于在文本框中输入字符串。
语法

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

42、怎么知道一个元素是否显示在屏幕上?

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

  • isDisplayed()
  • isSelected()
  • isEnabled()

语法:

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

43、如何使用linkText点击超链接?

语法:

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

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

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

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

如果您觉得文章还不错,请 点赞、分享、在看、收藏 一下,因为这将是我持续输出更多优质文章的最强动力!

最后: 下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取 【保证100%免费】
在这里插入图片描述

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!
在这里插入图片描述