​​​​字节跳动Selenium面试题、笔试题(含答案)

1450 篇文章 68 订阅
1438 篇文章 113 订阅

 整理了一些软件测试方面的资料、面试资料(接口自动化、web自动化、app自动化、性能安全、测试开发等),有需要的小伙伴可以文末关注我的文末公众号,无套路自行领取~ 

Selenium面试题

目录

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

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

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

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

    5、什么是Selenium?

    6、Selenium有哪些不同的组成部分?

    7、Selenium支持哪些编程语言、浏览器和操作系统?

    8、Selenium版本有哪些重大变化/升级?

    9、Selenium支持哪些测试类型?

    10、Selenium IDE是什么?

    11、Selenium Selenese是什么?

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

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

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

    15、Selenium中的断言是什么?

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

    17、XPath是什么?

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

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

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

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

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

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

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

    25、Selenium Grid/网格是什么?

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

    27、请编写代码片段以在WebDriver中启动Chrome浏览器?

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

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

    30、在WebDriver中如何进行拖放操作?

    31、在WebDriver中刷新网页有哪些方法?

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

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

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

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

    36、如何处理WebDriver中的框架?

    37、.NET是否有HtmlUnitDriver?

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

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

    40、如何在WebDriver中截取屏幕截图?

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

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

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

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();

Java

这里,“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();

Java

方法2 使用 driver.getCurrentUrl() 和 driver.get() 命令 

driver.get(driver.getCurrentUrl());

Java

方法3 使用 driver.getCurrentUrl() 和 driver.navigate() 命令 

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

Java

方法4 使用 sendKeys 命令在任何文本框上按 F5 键 

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

Java

方法5 使用 sendKeys 命令传递 F5 键的 ascii 值,即“\uE035” 

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

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

返回浏览器历史记录:

driver.navigate().back();

Java

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

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");

Java

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();

Java

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

driver.navigate().forward();

Java

navigate().refresh()

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

driver.navigate().refresh();

Java

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");

Java

使用 tagName 定位 iframe -

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

Java

使用索引定位 iframe,
frame(index)示例:

driver.switchTo().frame(0);

Java

frame(Name of Frame)示例:

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

Java

frame(WebElement element) 选择父窗口

driver.switchTo().defaultContent();

37、.NET是否有HtmlUnitDriver?

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

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

C#

要运行 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();

Java

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

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

Java

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

今天的分享就到此结束了,如果文章对你有帮助,记得点赞,收藏,加关注。会不定期分享一些干货哦......

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

可以在下方我的公众号免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是Selenium常见面试题及答案: 1. 什么是Selenium? 答:Selenium是一个自动化测试工具,用于测试Web应用程序的功能和用户界面。 2. Selenium有哪些组件? 答:Selenium有三个主要组件:Selenium IDE,Selenium WebDriver和Selenium Grid。 3. Selenium WebDriver如何在浏览器执行测试? 答:Selenium WebDriver可以与多个浏览器(如Chrome,Firefox,IE,Safari)进行交互,并使用浏览器的原生API执行测试。 4. 你如何在Selenium WebDriver处理浏览器弹出窗口? 答:Selenium WebDriver提供了switchTo()方法,可以轻松切换到弹出窗口。使用getWindowHandles()方法可以获取所有打开的窗口的句柄,然后使用switchTo()方法切换到所需的窗口。 5. 你如何在Selenium WebDriver处理iframe? 答:使用switchTo()方法选择iframe,然后可以在iframe执行测试步骤。 6. 如何在Selenium WebDriver处理下拉列表? 答:使用Select类可以轻松处理下拉列表。使用selectByVisibleText()方法可以根据可见文本选择选项,selectByValue()方法可以根据值选择选项,selectByIndex()方法可以根据索引选择选项。 7. 如何在Selenium WebDriver处理JavaScript弹出框? 答:使用switchTo()方法可以切换到JavaScript弹出框。使用alert()方法可以获取警报框的文本,使用dismiss()方法可以关闭警报框,使用accept()方法可以接受警报框。 8. 如何在Selenium WebDriver处理文件上传? 答:使用sendKeys()方法可以将文件路径作为参数传递到文件上传输入字段。 9. 如何在Selenium WebDriver处理页面滚动? 答:使用JavaScriptExecutor接口可以在Selenium WebDriver处理页面滚动。使用executeScript()方法可以使用JavaScript在页面上滚动。 10. 如何在Selenium WebDriver处理等待? 答:使用WebDriverWait类可以在Selenium WebDriver处理等待。使用until()方法可以等待特定条件的出现。例如,使用expected_conditions类可以等待元素可见,元素存在,元素的文本等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值