首页 > 其他分享 >Selenium自动化测试面试必备:高频面试题及答案整理

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

时间:2023-05-25 11:37:03浏览次数:45  
标签:xpath 面试题 Selenium 必备 元素 driver 测试 句柄

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

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

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

3.什么是Selenium 2.0?
它是Selenium RCWebDriver 的组合。

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

5.Selenium WebDriver 中的定位器是什么?
定位器用于识别网页上的元素。它是HTML网页的属性。我们使用不同类型的定位器来查找页面元素
● ID
● Name
● cssSelector
● Link text
● PartialLinkText
● ClassName
● tagName

6.绝对路径和相对路径有什么区别?
绝对路径以单个正斜杠 /开头,这意味着你可以从根节点选择元素,如html/body/div[4]/div[2]/a
相对路径以双正斜杠 //HTML 内容的中间开始。它比绝对路径小而健壮,如//*[@id=’Blog1′]/div[1]/a

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

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

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

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

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

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

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

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

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

  1. By Name
    driver.switchTo().frame(“frameName”);
  2. By Index
    driver.switchTo().frame(indexOfFrame);
  3. By WebElement
    driver.switchTo().frame(“xpath of frame “);

12.WebDriver 中有哪些不同类型的驱动程序?
● 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();

注意:build 方法用于关闭所有系列的操作,而 perform 方法用于一次执行所有操作。

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

19.get() 和 navigate() 有什么区别?
get()方法用于导航到指定的URL,并等待页面加载完成。

driver.get(“https://www.cnblogs.com/mrjade”);

navigate()方法提供了一组导航方法,包括 back()forward()refresh()。这些方法用于在浏览器历史记录中导航,或者刷新当前页面。

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

19.如何处理Alert弹窗?
Selenium可以使用Alert类来处理JavaScript弹窗

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

20.如何获取 Web 应用程序的页面标题?

String pagetitle = driver.getTitle();

21.如何在 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;
    }
}

21.如何断言提示框文本?
要验证提示框文本,我们必须将鼠标悬停在出现提示框的文本元素上,然后使用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);

22.Selenium可能出现的异常有哪些?
NoSuchElementException: 当 WebDriver无法使用指定的定位器找到网页上的元素时,会发生此异常。
ElementNotVisibleException: 当WebDriver无法与元素进行交互,因为该元素在网页上不可见时,会发生此异常。
TimeoutException: 当WebDriver无法在指定的时间限制内执行操作时,会发生此异常。
StaleElementReferenceException: 当WebDriver无法与元素进行交互,因为该元素不再附加到网页的DOM 上时,会发生此异常。
NoSuchFrameException: 当WebDriver无法使用指定的定位器找到网页上的框架时,会发生此异常。
InvalidSelectorException: 当指定的定位器策略无效或定位器语法不正确时,会发生此异常。
WebDriverException: 这是一种通用的异常情况,可能由各种原因引起,例如网络问题、服务器问题或浏览器崩溃等。

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

https://mp.weixin.qq.com/s/70EJ36TDRyQMNhqGToEfTw

标签:xpath,面试题,Selenium,必备,元素,driver,测试,句柄
From: https://www.cnblogs.com/mrjade/p/17430619.html

相关文章

  • 走进Linux世界,学习Linux系统的必备指南
    随着计算机技术的不断发展,Linux操作系统已成为IT行业中备受关注的操作系统之一。Linux以其安全性、稳定性和开放性,受到了广泛的认可和欢迎。学习Linux系统对于IT行业的从业者来说是非常重要的。但是,对于初学者来说,学习Linux可能会感到有些困难。 所以,我今天我打算给初学者们答......
  • 开发者们:618电商团战即将开启,“抢流量”想上分,必备这三个大招 | MobTech观察
    最卷的一届“618”大促即将来袭。5月23日晚间开始,各平台陆续对外启动预售。在消费领域加速复苏,全国各地迎来“拼经济”热潮的背景下,各平台纷纷对外喊话,将打造“史上投入最大”的一届“618”。电商平台们想借年中大促漂漂亮亮地打一场“翻身仗”,却发现这场仗并不好打。据万得(Wind)数......
  • vs2019打包程序时添加自定义的系统必备组件
     若要创建引导程序包,必须创建产品清单产品清单 product.xml包清单 package.xml 将文件复制到引导程序文件夹位置C:\ProgramFiles(x86)\MicrosoftVisualStudio14.0\SDK\Bootstrapper\Packages文件夹下    ......
  • selenium 启动ie浏览器报错:Unexpected error launching Internet Explorer. Protected
    解决selenium启动ie浏览器报错:UnexpectederrorlaunchingInternetExplorer.ProtectedModesettingsarenotthesameforallzones错误原因是IE浏览器中的安全选项设置不一致。打开IE浏览器,进入Internet选项, 确保这四个区域的启用保护模式设置保持一致应用即可。......
  • python - selenium + Edge
    1.安装相关库和下载相关文件pip3installseleniumpip3installmsedge-selenium-tools在https://developer.microsoft.com/zh-cn/microsoft-edge/tools/webdriver/下载msedgedriver.exe,可在edge帮助查看当前edge的版本号,下载对应版本即可2.代码fromseleniumimportwe......
  • 珍藏推荐| 设计师必备的9大国外高清照片网站
    [url]https://www.jianshu.com/p/820f70c42d40[/url][url]http://www.fengniao.com/[/url][url]https://www.douban.com/note/244632573/?type=like[/url]寻找高质量的图片是一件很头痛的事情,国内的高清大图网站基本上是收费,或者以虚拟币的形式来收费。......
  • Python 05 Selenium 等待
    等待WebDriver通常可以说有一个阻塞API。因为它是一个指示浏览器做什么的进程外库,而且web平台本质上是异步的,所以WebDriver不跟踪DOM的实时活动状态。大多数由于使用Selenium和WebDriver而产生的间歇性问题都与浏览器和用户指令之间的竞争条件有关。例如,用户指示浏览......
  • Selenium 007 API
    SeleniumAPIfromseleniumimportwebdriverfromselenium.webdriver.common.byimportByfromselenium.webdriver.support.uiimportWebDriverWaitfromselenium.webdriver.supportimportexpected_conditionsasECdriver=webdriver.Chrome()driver.maximize_w......
  • 现代 .NET中大型项目开发必备 工具项
    在DeveloperSharp框架中,存在两个非常强大的工具接口,一个是IUtility工具接口(提供一系列有用的功能),一个是IDataAccess工具接口(提供数据访问功能)。本文将具体介绍IUtility。 IUtility所在的命名空间是:DeveloperSharp.Framework.CoreUtility(需从NuGet引用DeveloperSharp包)它主要......
  • 5年Python生涯总结出10个玩Python必备的网站
    “玩Python必备的10大精品网站”5年Python沉淀,总结一下作为一个Python玩家,必须要知道的十大精品网站。无用请吐槽!有用请点赞!!爱我请三连!!!目录一、模块查询二、闯关游戏三、Django教程四、Python资源大全五、数据/竞赛/学习六、Python语法/项目经验七、Flask资料大全八、机器学习中文......