2024年最全2024非常全的selenium面试题及答案,测试工程师没有碰到算我输,字节跳动+阿里+华为+腾讯等大厂软件测试面试题

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

Selenium就是一套专门用于自动化Web浏览器的工具。 而已! 你用这个东西来做什么完全取决于你。 主要是用于自动化Web应用程序进行测试,但肯定不仅限于此。 无聊的基于Web的管理任务也可以(也应该!)也是自动化的。
Selenium有一些最大的浏览器供应商的支持,他们已经采取(或正在采取)步骤使Selenium成为其浏览器的本地部分。 它也是无数其他浏览器自动化工具,API和框架的核心技术。
最新的Selenium版本已经是3.0(2016年10月13日正式release),但是因为是新技术,Selenium3.0的使用范围还不太广泛。变动的范围也不是很大,主要是更倾向于Webdriver,而更多的摒弃了RC。

2 什么是Selenium Webdriver

Webdriver (Selenium2)是一种用于Web应用程序的自动测试工具,它提供了一套友好的API,与Selenium 1(Selenium-RC)相比,Selenium 2的API更容易理解和使用,其可读性和可维护性也大大提高。Webdriver完全就是一套类库,不依赖于任何测试框架,除了必要的浏览器驱动,不需要启动其他进程或安装其他程序,也不必像Selenium 1那样需要先启动服务。
另外,二者所采用的技术方案也不同。Selenium 1是在浏览器中运行 JavaScript来进行测试,而Selenium 2则是通过原生浏览器支持或者浏览器扩展直接控制浏览器。
Selenium 2针对各个浏览器而开发的,它取代了嵌入到被测Web应用中的 JavaScript。与浏览器的紧密集成,支持创建更高级的测试,避免了JavaScript安全模型的限制。除了来自浏览器厂商的支持,Selenium 2 还利用操作系统级的调用模拟用户输入。

3 S什么是elenium IDE?

Selenium IDE是Selenium脚本的集成开发环境。 它被实现为Firefox扩展(插件),并允许您记录,编辑和调试测试。

4 常用自动化测试工具机器运行原理,写出一段元素查找的代码?

webdriver 原理:

l 每个Selenium 命令,这里指的是所谓的基础操作,例如,点击、输入等,都会创建一条 HTTP 请求, 发送给 Browser WebDriver

l Browser WebDriver 使用一个HTTP Server 监听和接收HTTP 请求

l HTTP Server 根据协议规则定义这些 Selenium 命令对应的浏览器具体操作

l 浏览器执行这些操作

l 浏览器将执行状态返回给HTTP Server

l HTTP Server 再将这些状态信息返回给自动化脚本

5 如何开展自动化测试框架的构建?

我们公司的自动化测试框架主要是有页面库,数据驱动,测试脚本,测试报告,持续集成这几个部分组成的。

页面对象库对自动化包括工具(selenium,appium)API 的二次封装,还有使用二次封装后的自动化工具类实现的页面元素封装(Page Object)然后会给封装好的页面设置一个统一入口类。这些之中会有一个页面元素文件专门存放元素的定位方法。

数据驱动部分主要是测试脚本中使用的数据文件(excel,yaml,txt)以及读取方法类,如果数据涉及到数据库,也会把对应的数据读取方法封装到这个部分。

测试脚本主要是通过 pytest 测试框架进行编写的,选择其的原因主要有其支持 assert 语句断言,适合复杂的功能测试,执行过程中可以自定义用例执行顺序和跳过以及预期,支持重复执行,还可兼容 unittest 编写的测试用例,最重要的是支持参数化和方便持续集成工具集成。

测试报告主要是通过 pytest 自动生成的Allure 报告,其可读性可生动的数据表图比 pytest 报告更能反应测试结果,也可以集成与 Jenkins 中。

持续集成方面主要是通过 Jenkins 进行实现的,目的在于测试脚本的无人值守执行以及自动生成测试报告,方便测试人员能够省出时间进行更多的功能测试和探索性测试。(通过设置几个 git,gitlab,mailer,allure, 等功能插件,配置 Allure 报告,默认邮件发送设置。用例脚本主要存放在 gitlab 用例库中,设置好轮询策略之后,配置报告发送的目标邮箱,就可以实现持续集成实践中的测试环节)

6 如何设计自动化测试用例:

l编写测试脚本之前要编写测试用例,而且测试用例不能直接使用手工测试的用例。

l自动化的测试用例是一个完整的场景。用户登录系统到用户退出。

l用例之验证一个功能点。不用试图登陆后验证所有的功能在退出

l测试用例尽量只做正向的逻辑验证。

l用例之间不要产生关联,相互独立,也要高内聚,低耦合

l测试用例关注的是功能逻辑的实现,字段无关

l测试用例的上下文必须有一定的顺序性,前置条件清晰

l检查点的设置要侧重,全面,灵活

l测试用例对数据的操作要进行还原

l测试用例必须是可回归的

l用例选择遵循成本始终,构建场景,目的冒烟回归,繁琐功能,主体流程

l用例转型遵循前置配置,抛异常,步骤验证,高内聚,关门归原

7 webdriver 如何开启和退出一个浏览器?

开启:dr = webdriver.浏览器类型() 关闭:dr.quit()

8 什么是自动化测试框架?

测试自动化框架是设置特定产品的自动化规则的集成系统。该系统集成了功能库,测试数据源,对象详细信息和各种可重复使用的模块。这些组件用作需要组装以代表业务流程的小型构建块。该框架为测试自动化提供了基础,并简化了自动化工作。

也是为自动化软件测试提供支持的假设框架,概念和工具的主要优点是维护成本低。如果任何测试用例发生变化,那么只需要更新测试用例文件,驱动程序脚本和启动脚本将保持不变。理想情况下,如果应用程序发生更改,则无需更新脚本。

选择正确的框架/脚本技术有助于降低成本。与测试脚本相关的成本是由于开发和维护工作。测试自动化期间使用的脚本的方法对成本有影响。

通常使用各种框架/脚本技术:

线性(程序代码,可能由使用记录和播放的工具生成)

结构化(使用控制结构 - 通常是“if-else”,“switch”,“for”,“while”条件/语句)

数据驱动(数据存储在数据库,电子表格或其他机制中,比如xml)

关键字驱动

行为驱动

混合(使用上述两种或更多种模式)

自动化测试框架主要负责:

定义表达期望的格式

创建一个挂钩或驱动被测应用程序的机制

执行测试

报告结果

9 Selenium是什么,流行的版本有哪些?

Selenium是基于Web的最流行的UI自动化测试工具。它提供了一组支持多种平台的公开API(例如Linux,Windows,Mac OS X等)。此外,像Google Chrome,Mozilla Firefox,Internet Explorer和Safari等所有现代浏览器都可以用来运行Selenium测试。它也涵盖了Android平台,其中Appium是实现Selenium Webdriver界面的工具,用于移动自动化。

值得注意的是,除了许多后来的小型版本之外,硒还有三个主要版本:

Selenium 1.0或Selenium RC,于2004年初发布,提供了一个使用服务器与浏览器交换命令和响应的API集。

Selenium 2.0或Selenium Webdriver,在2011年中推出,并在Selenium功能中引入了一系列重大改进。这些新的API完全取代了服务器组件,并与目标浏览器本地交互。

Selenium 3.0,这个版本是在2016年末发布的大版本。它带来的主要变化是引入Webdriver API的W3C规范,用于浏览器自动化。也就是说,每个主要的浏览器都会有自己的Webdriver API来实现功能。

10 你如何从命令行启动Selenium RC?

// 简单的启动Selenium RC的方法是

java -jar selenium-server.jar

// 在浏览器中运行一套Selenese脚本

java -jar selenium-server.jar -htmlSuite

11 在我的机器端口4444不是免费的。我怎样才能使用另一个端口?

//你可以在运行selenium服务器时指定端口为 -

Java -jar selenium-server.jar -port 5555

12 什么是Selenium Server,它与Selenium Hub有什么不同?

Selenium Server是使用单个服务器作为测试节点的一个独立的应用程序。Selenium hub代理一个或多个Selenium的节点实例。一个hub 和多个node被称为Selenium grid。运行SeleniumServer与在同一主机上用一个hub和单个节点创建de Selenium grid类似。

13 你如何从Selenium连接到数据库?

Selenium是一个Web UI自动化工具。它不提供任何API来建立数据库连接。这取决于你使用Selenium进行自动化的编程语言。在下面的例子中,我们假设正在使用Java。

一个Connection对象表示与数据库的连接。当我们使用连接方法连接到一个数据库时,我们创建了一个连接对象,它代表了与数据库的连接。单个数据库可能有一个连接或多个连接,还可能有多个连接到不同的数据库上。

我们可以使用Connection对象来做以下事情:

创建用于执行SQL语句的Statement,PreparedStatement和CallableStatement对象。

可以帮助我们提交或回滚一个JDBC事务。

如果你想知道连接到的数据库或数据源信息,Connection对象通过使用DatabaseMetaData就可以收集有关数据库或数据源的信息。

可以帮助我们关闭数据源。Connection.isClosed() 方法只有在调用了Connection.close()时才返回true 。此方法用于关闭所有连接。

首先我们需要通过使用
DriverManager.getConnection()方法,建立与数据库的连接。这个方法接受一个包含URL的字符串。DriverManager类尝试查找可以连接到由字符串URL表示的数据库的驱动程序。每当调用getConnection()方法时,DriverManager类都会检查可以连接到URL中指定的数据库的所有已注册的Driver类的列表。

语法:

String url = “jdbc: odbc: makeConnection”;

Connection con = DriverManager.getConnection(url, “userID”, “password”);

14 你如何验证多个页面上存在的一个对象?

可以使用下面的Selenium命令来检查:

assertTrue(selenium.isElementPresent(locator));

15 XPath中使用单斜杠和双斜杠有什么区别?

如果XPath是从文档节点开始,它将允许创建“绝对”路径表达式。

例如 “/ html / body / p”匹配所有的段落元素。

如果XPath在文档中的任意位置开始进行选择匹配,那么它将允许创建“相对”路径表达式。

例如 “// p”匹配所有的段落元素。

16 如何编写Selenium IDE / RC的用户扩展?

用户扩展(UX)存储在Selenium IDE或Selenium RC用来激活扩展的单独文件中。它包含用JavaScript编写的函数定义。

因为Selenium的核心是用JavaScript开发的,所以要符合原语言的标准规则来创建扩展。要创建一个扩展,我们必须用下面的设计格式来编写函数。

// 样例

Selenium.prototype.doFunctionName = function(){

}

函数名称前面的“do”告诉Selenium这个函数可以被调用为一个步骤命令,而不是作为内部函数或私有函数被调用。

17 如何在页面加载成功后验证元素的存在?

它可以通过下面的代码行来实现。

只需一点时间(以秒为单位)来检查元素,如下所示:

public void waitForElementPresent(String element, int timeout) throws Exception {
for (int second = 0;; second++) {
if (second >= timeout)
fail("Timeout. Unable to find the Specified element" + element);
try {
if (selenium.isElementPresent(element))
break;
} catch (Exception e) {
}
Thread.sleep(1000);
}
}

18 你对Selenium Grid有什么了解?它提供了什么功能?

Selenium Grid是一款利用现有计算基础架构大幅加速Web应用程序功能测试的工具。允许测试者轻松地在多台机器上并行运行多个测试,并且可以在异构环境中运行。

基于优秀的Selenium Web测试工具,Selenium Grid允许测试者并行运行多个Selenium Remote Control实例。更好的是,它集成显示所有Selenium远程控制,所以不必担心实际的基础设施。Selenium Grid将运行Selenium测试套件所需的时间,缩短到Selenium实例的单个实例运行时间的一小点。

19 如何从你的Java Class启动Selenium服务器?

try {
seleniumServer = new SeleniumServer();
seleniumServer.start();
} catch (Exception e) {
e.printStackTrace();
}

20 Selenium中有哪些验证点?

Selenium主要有三种验证点:

检查页面标题

检查某些文字

检查某些元素(文本框,下拉菜单,表等)

§

21 什么是XPath?什么时候应该在Selenium中使用XPath?

XPath是一种在HTML / XML文档中定位的方法,可用于识别网页中的元素。如果没有与页面上的元素相关联的名称/ ID,或者名称/ ID的一部分是常量,则必须使用XPath。

绝对路径用 - / 单斜杠

相对路径用 - // 双斜杠

ID,类,名称也可以用于XPath :

//input[@name=’q’]

//input[@id=’lst-ib’]

//input[@class=’ lst’]

如果id / name / class的一部分是常量 :

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

lst-ib’]

//input[@class=’ lst’]

如果id / name / class的一部分是常量 :

[外链图片转存中…(img-IHOap1bt-1714977400918)]
[外链图片转存中…(img-Pf9uhEex-1714977400918)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 10
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值