面试准备——selenium常见面试题及答案(java)

自动化测试面试——selenium基础篇

目的:考察求职者在自动化测试岗位的selenium工具的熟悉程度

1.怎么判断元素是否存在?

判断元素是否存在和是否出现不同, 判断是否存在意味着如果这个元素压根就不存在, 就会抛出NoSuchElementException

这样就可以使用try catch,如果catch到NoSuchElementException 就返回false。通常在项目中会把这个功能封装在isElementPresent方法中。

2.如何判断元素是否出现?

判断元素是否出现,存在两种情况,一种是该元素压根就没有,自然不会出现;另外一种是有这样的元素,但是是hidden状态

可以通过先判断是否存在,如果不存在返回false;如果存在再去判断是否displayed。

3.selenium中hidden或者是display = none的元素是否可以定位到?

不能,想点击的话,可以用js去掉dispalay=none的属性。

4. selenium中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定是可以点击的?

1.通过封装find方法实现waitforEmelentPresent,这样在对元素进行操作之前保证元素被找到,进而提高成功率

2.在对元素操作之前,比如click,如果该元素未display(非hidden),就需要先滚动到该元素,然后进行click操作;为啥使用滚动? 因为如果页面没有完全显示,element如果是在下拉之后才能显示出来,只能先滚动到该元素才能进行click,否则是不能click操作


1

2

3

JavascriptExecutor js=(JavascriptExecutor)driver;

        // roll down and keep the element to the center of browser

        js.executeScript("arguments[0].scrollIntoViewIfNeeded(true);", download);

3.不同方式进行定位,与expectedConditions判断方法封装,循环判断页面元素出现后再操作;

4.开发人员规范开发习惯,如给页面元素加上唯一的name,id等。

5. 如何去定位页面上动态加载的元素?

触发动态事件,然后findElemnt

如果是动态菜单,需要一级一级find(JS实现)

6.如何去定位属性动态变化的元素?

  属性动态变化是指该element没有固定的属性值,所以只能通过相对位置定位

比如通过xpath的轴, parent/following-sibling/precent-sibling等

另外也可以尝试findbyelements遍历

7.点击链接以后,selenium是否会自动等待该页面加载完毕?

不会的。所以有的时候,当selenium并未加载完一个页面时再请求页面资源,则会误报不存在此元素。所以首先我们应该考虑判断,selenium是否加载完此页面。其次再通过函数查找该元素。

8.自动化测试的时候是否需要连接数据库做数据校验?

一般来说1、 UI自动化不需要(很少需要);2、接口测试会需要:从数据库层面来进行数据校验可以更方便验证系统的数据处理方面是否正确;

9.有几种元素常用定位方式,分别是?你最偏爱哪一种,为什么?

8种:id、name、class name、tag name、link text、partial link text、xpath、css selector 偏爱哪一种?答:

我最常用的是xpath(或CssSelector)因为很多情况下,html标签的属性不够规范,无法通过单一的属性定位,这个时候就只能使用xpath可以去重实现定位唯一element

事实上定位最快的是Id,因为id是唯一的,然而大多数开发并没有设置id。

10.怎么提高selenium脚本的自动化执行效率?

1.优化测试用例,尽可不使用 sleep,减少使用ImplicitlyWait

2.多使用selenium的WebDriverWait/FluentWait,这样可以优化等待时间

3.减少不必要的操作步骤,如经过三四步才能打开我们要测试的页面的话,我们就可以直接通过网址来打开,减少不必要的操作。

4.中断页面加载,如果页面加载的内容过多,我们可以查看一下加载慢的原因,如果加载的内容不影响我们测试,就设置超时时间,中断页面加载。

5.使用性能好的电脑

11.用例在运行过程中经常会出现不稳定的情况,也就是这次可以通过,下次无法通过了,如何提高用例的稳定性?

1,查找元素前先做判断:ExpectedConditions里面的各种方法;

2,显式等待:多使用WebDriverWait,加上显式等待时间,等要操作的元素出现之后再执行下面的操作;

3、多用try catch捕获异常;

4,多线程的时候,减少测试用例耦合度,因为多线程的执行顺序是不受控制的;
5,尽量使用测试专用环境,避免其他类型的测试同时进行,对数据造成干扰。

12.你的自动化用例的执行策略是什么?

1.自动化测试用例是用来监控的。集成到jenkins,创建定时任务定时执行;
2.有些用例在产品上线前必须回归。jenkins上将任务绑定到开发的build任务上,触发执行;
3.有些用例不需要经常执行。jenkins创建一个任务,需要执行的时候人工构建即可。

13.什么是持续集成?

频繁的将代码集成到主干,持续性的进行项目的构架,以便能能够快速发现错误,防止分支大幅度偏离主干

14.webdriver client的原理是什么?

在selenium启动以后,driver充当了服务器的角色,跟client和浏览器通信,client根据webdriver协议发送请求给driver。driver解析请求,并在浏览器上执行相应的操作,并把执行结果返回给client.

15.webdriver的协议是什么?

The Wire Protocol

16.启动浏览器的时候用到的是哪个webdriver协议

http

17. 什么PO模式,什么是page factory?

PO模式是page object model的缩写,顾名思义, 是一种设计模式,把每个页面当成一个页面对象,页面层写定位元素方法和页面操作方法,实现脚本的page和真实的网站页面Map起来,一一对应起来。这样能测试框架更容易维护。 比如一个登陆页面,使用PO模式后,会创建一个LoginPage的class,该class会定义用户名输入框,密码输入框,登陆按钮的webElenent;用例层从页面层调用操作方法,写成用例,这种模式可以做到定位元素与脚本分离。所以这样的设计理念就是PO模式。 而PageFactory隶属PO模式,是用来初始化每个PO模式实现的Page Class,初始化对象库。

18.怎样去选择一个下拉框中的value=xx的option?

1.select类里面提供的方法:selectByValue(“xxx”)
2.xpath的语法也可以定位到

19.如何在定位元素后高亮元素?

重置元素属性,给定位的元素加背景、边框

20.get和post 的区别?

1、GET请求:请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接。
   POST请求:POST请求会把请求的数据放置在HTTP请求包的包体中。
2、传输数据的大小
使用GET请求时,传输数据会受到URL长度的限制。
对于POST,理论上是不会受限制的
3、安全性。POST的安全性比GET的高

先到此为止,后续接着总结.....

原文地址:https://www.cnblogs.com/gaogo/p/11442375.html

时间: 2024-08-29 05:51:44

面试准备——selenium常见面试题及答案(java)的相关文章

selenium 常见面试题以及答案(Java版)

1.怎么 判断元素是否存在? 判断元素是否存在和是否出现不同, 判断是否存在意味着如果这个元素压根就不存在, 就会抛出NoSuchElementException 这样就可以使用try catch,如果catch到NoSuchElementException 就返回false 2.如何判断元素是否出现? 判断元素是否出现,存在两种情况,一种是该元素压根就没有,自然不会出现:另外一种是有这样的元素,但是是hidden状态 可以通过先判断是否存在,如果不存在返回false:如果存在再去判断是否dis

献给 2018 还在艰苦奋斗的 Java 程序员,Java 常见面试题及答案!

1.什么是Java虚拟机?为什么Java被称作是"平台无关的编程语言"? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程.Java 源文件被编译成能被 Java 虚拟机执行的字节码文件. Java 被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译. Java 虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性. 2.JDK和JRE的区别是什么? JDK: java开发工具包,包含了JRE.编译器和其它工具(如:jav

JAVA常见面试题及解答-java开发

JAVA常见面试题及解答 Java的垃圾回收总结  浅谈Java中的内部类 1)transient和volatile是java关键字吗? 如果用transient声明一个实例变量,当对象存储时,它的值不需要维持.例如: class T { transient int a;  //不需要维持 int b;  //需要维持 } 这里,如果T类的一个对象写入一个持久的存储区域,a的内容不被保存,但b的将被保存. volatile修饰符告诉编译器被volatile修饰的变量可以被程序的其他部分改变.在多

android 常见面试题以及答案

http://blog.csdn.net/bobo1808/article/details/6783344 1.    请描述下Activity的生命周期.2.    如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?3.    如何将一个Activity设置成窗口的样式.(Edited by Sodino)4.    如何退出Activity?如何安全退出已调用多个Activity的Application?5.    请介绍下Android中常用的五种布局.6

java常见面试题及答案(基础题122道,代码题19道)

JAVA相关基础知识1.面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象包括两个方面,一是过程抽象,二是数据抽象.2.继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法.对象的一个新类可以从现有的类中派生,这个过程称为类继承.新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类).派

ASP.NET常见面试题及答案(130题)

1.C#中 property 与 attribute(抽像类)的区别,他们各有什么用处,这种机制的好处在哪里?答:property和attribute汉语都称之为属性.不过property是指类向外提供的数据区域.而attribute则是描述对象在编译时或运行时属性的.这两者是有本质区别的.2 .列举ASP.NET 页面之间传递值的几种方式. 答. 1).使用QueryString, 如….?id=1; response. Redirect()…. 2).使用Session变量 3).使用Ser

微软推荐的130道ASP.NET常见面试题及答案

1. 简述 private. protected. public. internal 修饰符的访问权限. 答 . private : 私有成员, 在类的内部才可以访问. protected : 保护成员,该类内部和继承类中可以访问. public : 公共成员,完全公开,没有访问限制. internal: 在同一命名空间内可以访问. 2 .列举ASP.NET 页面之间传递值的几种方式. 答. 1.使用QueryString, 如....?id=1; response. Redirect()...

JAVA常见面试题及答案

1. 什么是 Java 虚拟机?为什么 Java 被称作是 “ 平台无关的编程语言 ” ? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程. Java 源文件被编译成能被 Java 虚拟机执行的字节码文件. Java 被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译. Java 虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性. 2.JDK 和 JRE 的区别是什么? JDK:   java 开发工具包 , 包含了 JRE 

JVM常见面试题及答案

11.JVM内存分哪几个区,每个区的作用是什么? java虚拟机主要分为以下一个区: 方法区:1. 有时候也成为永久代,在该区内很少发生垃圾回收,但是并不代表不发生GC,在这里进行的GC主要是对方法区里的常量池和对类型的卸载2. 方法区主要用来存储已被虚拟机加载的类的信息.常量.静态变量和即时编译器编译后的代码等数据.3. 该区域是被线程共享的.4. 方法区里有一个运行时常量池,用于存放静态编译产生的字面量和符号引用.该常量池具有动态性,也就是说常量并不一定是编译时确定,运行时生成的常量也会存在