selenium 和 appium 面试题

1. 什么是Selenium?

Selenium是浏览器自动化工具,主要用来Web的自动化测试,以及基于Web的任务管理自动化。它支持的语言有:python、Java、ruby、JavaScript等,并且几乎能在主流的浏览器上运行。

Selenium2.0、Selenium3.0主要由三大部分组成:SeleniumIDE、Selenium WebDriver、Selenoium Grid。

  1. IDE录制和回放脚本,可以模拟用户对页面的真实操作,区别于其他工具:是通过拦截http请求。
    • UI节点的细微变化,都可能导致自动化测试工具无法识别,当测试项目项目大时,定位、更新十分困难。
    •  
  2. Grid实现在多台机器上、和异构环境中并行执行测试用例。并行执行不仅节省时间,而且可以同时在不同的浏览器、平台上运行自动化测试脚本。
  3. Web Driver:针对各个浏览器而开发,通过原生浏览器支持或者扩展(Chrome webDrive、FireFox WebDriver)直接控制浏览器

VS Selenium RC(Selenium1.0):在浏览器中运行javaScript,使用浏览器内置的JavaScript来翻译和执行selense

 

2 selenium 的特点

  开源,免费

l 多浏览器支持:FireFox、Chrome、IE、Opera

l 多平台支持:linux 、windows、MAC

l 多语言支持:java、python、ruby、php、C#、JavaScript

l 对 web 页面有良好的支持

l 简单(API 简单)、灵活(用开发语言驱动)

l 支持分布式测试用例执行

 

3 selenium 原理

 

 webdriver是按照server – client的经典设计模式设计的。

server端就是remote server,可以是任意的浏览器。当我们的脚本启动浏览器后,该浏览器就是remote server,它的职责就是等待client发送请求并做出相应;

client端简单说来就是我们的测试代码,我们测试代码中的一些行为,比如打开浏览器,转跳到特定的url等操作是以http请求的方式发送给被 测试浏览器,也就是remote server;remote server接受请求,并执行相应操作,并在response中返回执行状态、返回值等信息; 

 

 

4 编写自动化测试用例的原则:

1、一个脚本是一个完整的场景,从用户登陆操作到用户退出系统关闭浏览器。

2、一个脚本脚本只验证一个功能点,不要试图用户登陆系统后把所有的功能都进行验证再退出系统

3、尽量只做功能中正向逻辑的验证,不要考虑太多逆向逻辑的验证,逆向逻辑的情况很多(例如手

号输错有很多种情况),验证一方面比较复杂,需要编写大量的脚本,另一方面自动化脚本本身比较脆弱,

很多非正常的逻辑的验证能力不强。(我们尽量遵循用户正常使用原则编写脚本即可)

4、脚本之间不要产生关联性,也就是说编写的每一个脚本都是独立的,不能依赖或影响其他脚本。

5、如果对数据进行了修改,需要对数据进行还原。

6、在整个脚本中只对验证点进行验证,不要对整个脚本每一步都做验证。

 

 

5 如何提高selenium脚本的执行速度?

1)优化测试用例。

  • sleep、减少使用implicityWait,而使用WebDriverWait/FluentWait,这样可以优化等待时间
  •  

2)使用Selenium grid,通过testNG实现并发执行。 

说到这里,在编写测试用例的时候,一定要实现松耦合,然后再服务器允许的情况下,尽量设置多线程实现并发运行。

3)设置等待时间、中断页面加载。如果页面加载内容太多,我们可以查看一下加载缓慢的原因,在不影响测试的情况下,可以设置超时时间,中断页面加载。

 

6 在selenium中,有哪些不同定位元素方法

ID/className/Name/LinkText/PartialLinkText/Xpath/CSS selector

 

7 sleep ,implicitly_wait, WebDriverWait区别

sleep():设置固定休眠时间。python 的 time 包提供了休眠方法 sleep() ,导入 time 包后就可以使用 sleep()进行脚本的执行过程进行休眠。

implicitly_wait():是 webdirver 提供的一个超时等待。隐的等待一个元素被发现,或一个命令完成。

如果超出了设置时间的则抛出异常。

WebDriverWait():同样也是 webdirver 提供的方法。在设置时间内,默认每隔一段时间检测一次当前

页面元素是否存在,如果超过设置时间检测不到则抛出异常。

 

8 Appium 介绍

Appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web 应用和混合

应用。

所谓的“移动原生应用”是指那些用 iOS 或者 Android SDK 写的应用(Application 简称 app)。所

谓的“移动 web 应用”是指使用移动浏览器访问的应用(Appium 支持 iOS 上的 Safari 和 Android 上的

Chrome)。所谓的“混合应用”是指原生代码封装网页视图——原生代码和 web 内容交互。比如,

像 Phonegap,可以帮助开发者使用网页技术开发应用,然后用原生代码封装,这些就是混合应用。

重要的是,Appium 是一个跨平台的工具:它允许测试人员在不同的平台(iOS,Android)使用同一套

API 来写自动化测试脚本,这样大大增加了 iOS 和 Android 测试套件间代码的复用性。

 

9 Appium 与 Selenium的关系

selenium是web端的自动化,appium是app端的自动化,appium继承了webdriver(也就是selenium 2)

 

10 appium原理(加载流程

调用Andorid adb完成基本的系统操作

2)向Andriod上部署bootstrap.jar包并启动

3)Forward Android 的端口到PC的机器上

4)PC上监听端口接受请求,使用webdriver协议

5)分析命令并转通过forward的端口发给bootstrap.jar包

6)bootstrap接受请求并把命令发给UiAutomator或插桩体系

 

11 什么是POM模式?

Page Object模式是Selenium中的一种测试设计模式,主要是将每一个页面设计为一个Class,其中包含页面中需要测试的元素(按钮,输入框,标题 等),这样在Selenium测试页面中可以通过调用页面类来获取页面元素,这样巧妙的避免了当页面元素id或者位置变化时,需要改测试页面代码的情况。 当页面元素id变化时,只需要更改测试页Class中页面的属性即可。

 

    Page Object模式是一种自动化测试设计模式,将页面定位和业务操作分开,分离测试对象(元素对象)和测试脚本(用例脚本),提高用例的可维护性。

 

POM 的优势

1. POM 提供了一种在 UI 层操作、业务流程与验证分离的模式,这使得测

试代码变得更加清晰和高可读性

2. 对象库与用例分离,使得我们更好的复用对象,甚至能与不同的工具进

行深度结合应用

3. 可复用的页面方法代码会变得更加优化

4. 更加有效的命名方式使得我们更加清晰的知道方法所操作的 UI 元素。例

如我们要回到首页,方法名命名为: gotoHomePage(),通过方法名即可

清晰的知道具体的功能实现 

 

 

 

 

  • 13
    点赞
  • 150
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值