Selenium自动化测试面试必备:高频面试题及答案整理

自动化测试已经成为现代软件测试中不可或缺的一部分。在自动化测试中,Selenium是最受欢迎的工具之一,因为它可以模拟用户与Web应用程序的交互。因此,对于许多测试工程师来说,熟练掌握Selenium框架是非常重要的。如果你正在寻找一份自动化测试工作,那么你可能会被问到一些关于Selenium的面试问题。在本文中,我们将介绍一些最常见的Selenium自动化面试问题和答案,帮助你为面试做好准备。

01什么是Selenium?

Selenium一个基于web的开源的UI自动化测试框架。Selenium支持大多数语言,如JavaPHPPythonPerlRuby等。因此成为测试专业人员中最受欢迎的工具之一。它是不同测试工具的组合,如Selenium IDESelenium RCWebDriverSelenium Grid

02什么是Selenese?

Selenium命令通常被称为selenese,是用来运行测试的一个命令的集合。测试人员可以使用Selenese测试损坏的链接、UI上某些对象的存在、Ajax功能、弹窗、窗口、列表选项等等。

03什么是Selenium 2.0?

它是Selenium RC 和 WebDriver 的组合。

04什么是Xpath?

它是XML文档中元素的路径。通过使用它,我们可以很容易地找出网页上的各种元素。如//tagname[@attribute=’value’]

05Selenium WebDriver 中的定位器是什么?

定位器用于识别网页上的元素。它是HTML网页的属性。我们使用不同类型的定位器来查找页面元素,例如:

  • ID

  • Name

  • cssSelector

  • Link text

  • PartialLinkText

  • ClassName

  • tagName

06绝对路径和相对路径有什么区别?

1.绝对路径以单个正斜杠/开头,这意味着你可以从根节点选择元素,

html/body/div[4]/div[2]/a

2.相对路径以双正斜杠//HTML内容的中间开始。它比绝对路径小而健壮,

//*[@id=’Blog1′]/div[1]/a

07Selenium 有哪些缺点?

1.Selenium只支持基于web的应用。
2.无法读取验证码。
3.Selenium 没有生成测试结果的内置工具。
4.由于 Selenium是一个开源工具,所以它不提供任何技术支持。
5.Selenium没有任何对象存储库,因此我们无法在其中维护对象。为了克服这个问题,我们使用页面对象模型概念。

08Assert 和 Verify 有什么区别?

1.Assert:如果我们在测试脚本中使用Assert命令,那么如果有任何测试步骤失败,测试执行将停止。
2.Verify:它还用于验证测试步骤,但在任何时候测试步骤失败,测试执行将继续。

09Selenium Webdriver中的同步是什么?

有时Selenium比我们的Web应用程序更快,反之亦然。在这种情况下,我们必须管理两者的速度以运行我们的测试脚本。所以我们有不同的等待命令,比如隐式等待、显式等待等。

10隐式等待和显式等待有什么区别?

隐式等待:为整个测试执行期间设置时间。例如,如果Selenium没有找到任何元素,那么它会在给定的时间段内等待元素。如果在给定时间内没有找到该元素,那么它将抛出异常ElementNotVisibleException。

driver.manage().timeouts().implicitlyWait(20, TimeUnits.SECONDS);

显式等待:为特定的一个元素设置时间。如元素可见,按钮可点击等。如果我们为按钮设置显式等待3秒,然后Selenium为该按钮等待3秒。如果按钮在3秒内无法单击,则Selenium会抛出异常ElementNotVisibleException。

WebDriverWait wait = new WebDriverWait(driver, 3);
wait.until(ExpectedConditions.elementToBeClickable(By.id(“id”)));

11什么是iframe以及如何定位?

1.iframe是一个网页,它是HTML页面的独立部分。iframe用于显示一些不同的东西,如广告等。对于 iframe,我们使用<iframe>标签。
2.如何处理iframe:在处理iframe之前,我们首先应该知道如何识别任何网页中的iframe。因此,首先需要在网页中搜索iframe,如下图所示。

Selenium中可以用三种不同的方式来处理iframe

  • By Name

driver.switchTo().frame(“frameName”);
  • By Index

driver.switchTo().frame(indexOfFrame);
  • By WebElement

driver.switchTo().frame(“xpath of frame “);

12Webdriver有哪些不同类型的驱动程序?

  • FirefoxDriver

  • ChromeDriver

  • InternetExplorerDriver

  • SafariDriver

  • OperaDriver

  • AndriodDriver

  • IPhoneDriver

  • HtmlUnitDriver

13如何断言是否选中了复选框

可以使用isSelected()方法

driver.findElement(By.xpath(“locator of Checkbox”)).isSelected();

14如何断言按钮是否启用?

可以使用isEnabled()方法

driver.findElement(By.xpath(“locator of  button”)).isEnabled();

15如何断言元素是否可见?

可以使用isDisplayed()方法

driver.findElement(By.xpath(“locator of  web element”)).isDisplayed();

16如何从文本框中获取文本?

可以使用getText()方法

driver.findElement(By.xpath(“xpath of textbox”)).getText();

17什么是动作类(Actions)?

Actions类用于处理键盘事件、鼠标悬停事件(如拖放、回车、TabShift键等)。我们还可以双击任何元素,使用Action类右键单击任何元素。

Actions act = new Actions(driver);
// 鼠标悬停在元素上并单击它
act.moveToElement(element).click().build().perform();

注意:Actions类中的build()和perform()是两个非常重要的方法,它们通常一起使用。build()方法用于构建要执行的所有操作序列,但是并不实际执行这些操作。如果在build()方法后没有调用perform()方法,那么这些操作将不会被执行。perform()方法用于实际执行在build()方法中构建的所有操作序列。当调用perform()方法时,Selenium会按照构建的序列依次执行每个操作。

18如何从下拉列表中选择一个值?

通过使用Select类,有以下方法可以获取下拉列表的值。

  • selectByIndex()

  • selectByValue()

  • selectByVisibleText()

WebElement element = driver.findElement(By.xpath(“xpath of city dropdown”));
Select dropdownvalue = new Select(element);
// 选择第二个下拉值 - Jaipur
dropdownvalue.selectByIndex(1); 
dropdownvalue.selectByValue(“Jaipur”);
dropdownvalue.selectByVisibleText(“Jaipur”);

19get()和navigate()有什么区别?

  • get()方法用于导航到指定的URL,并等待页面加载完成。

driver.get(“https://www.cnblogs.com/mrjade”);
  • navigate()方法提供了一组导航方法,包括 back()forward() 和 refresh()。这些方法用于在浏览器历史记录中导航,或者刷新当前页面。

driver.navigate().forward();
driver.navigate().back();
driver.navigate().refresh();

20如何处理Alert弹窗?

Selenium可以使用Alert类来处理JavaScript弹窗

// 在 alert 单击确定按钮
driver.switchTo().alert().aceept(); 
// 在 alert 单击取消按钮
driver.switchTo().alert().dismiss(); 
// 获取 alert 文本
String alerttext = driver.switchTo().alert().getText();

21如何获取Web应用程序页面标题?

String pagetitle = driver.getTitle();

22如何在Selenium中处理多个窗口?

  • 获取当前窗口句柄。

  • 打开新窗口。

  • 获取所有窗口句柄列表。

  • 遍历窗口句柄列表,找到新窗口句柄。

  • 切换到新窗口。

  • 执行操作。

  • 切换回原来的窗口。

// 获取当前窗口句柄
String originalHandle = driver.getWindowHandle();
// 点击“打开新窗口”链接
driver.findElement(By.linkText("打开新窗口")).click();
// 获取所有窗口句柄列表
Set<String> handles = driver.getWindowHandles();
/ 遍历窗口句柄列表,找到新窗口句柄
for (String handle : handles) {
    if (!handle.equals(originalHandle)) {
        driver.switchTo().window(handle);
        break;
    }
}

23如何断言提示框文本?

要验证提示框文本,我们必须将鼠标悬停在出现提示框的文本元素上,然后使用getAttribute()方法获取。

WebElement element = driver.findElement(By.xpath(“xpath"));
Action act = new Actions(driver);
act.moveToElement(element).build().perform();
// 获取提示文本
tring tooltip_text = element.getAttribute(“title”)
// 断言
Assert.assertEquals(“mrjade”, tooltip_text);

24如Selenium可能出现的异常有哪些?

  • NoSuchElementException:当 WebDriver无法使用指定的定位器找到网页上的元素时,会发生此异常。

  • ElementNotVisibleException:当WebDriver无法与元素进行交互,因为该元素在网页上不可见时,会发生此异常。

  • TimeoutException:当WebDriver无法在指定的时间限制内执行操作时,会发生此异常。

  • StaleElementReferenceException:当WebDriver无法与元素进行交互,因为该元素不再附加到网页的DOM 上时,会发生此异常。

  • NoSuchFrameException:当WebDriver无法使用指定的定位器找到网页上的框架时,会发生此异常。

  • InvalidSelectorException:当指定的定位器策略无效或定位器语法不正确时,会发生此异常。

  • WebDriverException:这是一种通用的异常情况,可能由各种原因引起,例如网络问题、服务器问题或浏览器崩溃等。

25如何使用Selenium上传文件?

如果是input元素,可以通过使用sendKeys()方法,上传文件。在sendKeys中,只需要传文件路径+文件名即可。但有时当我们点击上传文件按钮时,会打开弹出窗口以从Pc中选择文件。在这种情况下,sendKeys命令不起作用,所以我们可以使用第三方工具如:AutoItRobot 来上传文件。

最后: 为了回馈铁杆粉丝们,我给大家整理了下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、linux 1,linux常用命令 2,某个时间段日志的查询 3,linux文件的上传和下载 二、功能测试 1,工作中所遇到的错误 2,测试流程: 3,测试计划元素: 4,测试报告元素: 5,测试点: 6,测试方法: 7,bug相关问 8,adb常用命令 9,软件测试原则 10,测试用例编写的要素 11,测试用例的设计原则 12,软件产品质量特性 13,android四大组件 14,web测试和app测试的区别 15,app的anr的根本原因 16,app的crash的原因 17,h5页面图片未加载出来问排查 18,区分原生和h5页面 19,为什么不能用jenkins打包 三、性能测试 1,了解jmeter 2,性能指标 3,如何做性能测试 四、接口测试 1,如何设计接口测试用例 2,为什么要做接口测试 3,接口测试的关注点 4,request处理cookie的三种方式 五、自动化测试 1,自动化核心框架 2,自动化测试的好处 3,自动化的前提 4,自动化测试的场景 5,元素定位的8种方式 6,如果一个元素无法定位,一般会考虑哪些原因 7,driver.close()和driver.quit()的区别 8,自动化脚本断言 9,判断页面元素是否存在 10,js在web自动化中的作用展示 11,自动化代码优化 12,selenium对比RF 13,自动化测试脚本三种等待 14,PO模式 六、HTTP协议 1,HTTP协议特点: 2,HTTP传输原理 3,get和post的区别 4,HTTP响应代码 5,osi七层模型 6,三次握手过程 7,session和cookie的区别 8,tcp和udp的区别 9,sockect通信原理 10,post的三种请求方式 七、数据库 1,sql分类 2,数据库事务特性:ACID 3,mysql索引的类型 4,池化思想 5,redis 6,如何提高数据库运行效率 八、java 1,面向对象的三个特征 2,重写和重载 3,比较sping,sping mvc 4,进程和线程的区别 5,java三层架构 6,处理异常 九、python 1,字符串反转的7种方法 2,new 和 _init_ 3,不使用中间变量交换两个变量的值 4,python四大内置高阶函数 5,python带颜色输出 6,python *args,**kargs用法 7,python常用模块 8,python多线程 9,python发送邮件 10,python操作图像 11,python的replace()方法的使用

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值