前言
最近看到群里有小伙伴贴出一组面试题,最近又是跳槽黄金季节,小编忍不住抽出一点时间总结了下,
回答不妥的地方欢迎各位高手拍砖指点。
 
一、selenium中如何判断元素是否存在?
首先selenium里面是没有这个方法的,判断元素存在需要自己写一个方法了。
元素存在有几种形式,一种是页面有多个元素属性重复的,这种直接操作会报错的;还有一种是页面隐藏的元素操作也会报错
 
二、selenium中hidden或者是display = none的元素是否可以定位到?
定位是可以定位到的,但是不能操作,可以判断元素is_displayed()
(我一直不里面这个定位到底是几个意思,只要页面上有的元素,我觉得都能定位到,
实在不行,小编可以爬源码Selenium2+python自动化37-爬页面源码(page_source),能不能操作那是另外一回事)
 
三、selenium中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定是可以点击的?
一种是隐式等待: driver.implicitly_wait()
另外一种是显式等待:WebDriverWait()
 
selenium+python高级教程》已出书:selenium webdriver基于Python源码案例

(购买此书送对应PDF版本)

 
 
四、如何提高selenium脚本的执行速度?
1.少用sleep
2.多用显式等待方法
3.弄个性能好的电脑
五、用例在运行过程中经常会出现不稳定的情况,也就是说这次可以通过,下次就没办法通过了,如何去提升用例的稳定性?
1.查找元素前先做前置条件判断:expected_conditions()里面的各种方法(这个我的博客里面暂时没写。后续补上)
2.显式等待:WebDriverWait()
这两者配合使用
 
六、你的自动化用例的执行策略是什么?

1.集成到jenkins一键执行,可以手动执行,也可以定时执行

七、什么是持续集成?

1.持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。
每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。
 
 
八、自动化测试的时候是不是需要连接数据库做数据校验?
1 UI自动化不需要
2 接口测试会需要
 
九、id,name,class,xpath, css selector这些属性,你最偏爱哪一种,为什么?
1.css妥妥的,css语法简洁,定位快(xpath语法长,定位慢,还不稳定)
 
十、如何去定位页面上动态加载的元素?
1. WebDriverWait()方法循环去查询是否元素加载出来了
 
十一、如何去定位属性动态变化的元素?
1.先去找该元素不变的属性,要是都变,那就找不变的父元素,用层级定位(以不变应万变)
 
十二、点击链接以后,selenium是否会自动等待该页面加载完毕?
1.这个不会等的,没加载完也可以下一步操作
 
 
十三、webdriver client的原理是什么?
[Webdriver实现原理](http://www.cnblogs.com/timsheng/archive/2012/06/12/2546957.html)

通过研究selenium-webdriver的源码,笔者发现其实webdriver的实现原理并不高深莫测无法揣度。在这里以webdriver ruby bindingfirefox-webdriver实现为例,简单介绍一下webdriver的工作原理。

  • 当测试脚本启动firefox的时候,selenium-webdriver 会首先在新线程中启动firefox浏览器。如果测试脚本指定了firefox的profile,那么就以该profile启动,否则的话就新启1个profile,并启动firefox;

  • firefox一般是以-no-remote的方法启动,启动后selenium-webdriver会将firefox绑定到特定的端口,绑定完成后该firefox实例便作为webdriver的remote server存在;

  • 客户端(也就是测试脚本)创建1个session,在该session中通过http请求向remote server发送restful的请求,remote server解析请求,完成相应操作并返回response;

  • 客户端接受response,并分析其返回值以决定是转到第3步还是结束脚本;

这就是webdriver的工作流程,看起来很复杂实际上当了解了webdriver的实现原理后,理解上述问题应该比较简单。

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

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

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

 
十四、webdriver的协议是什么?
1.这个尴尬了,不懂
 
十五、启动浏览器的时候用到的是哪个webdriver协议?
1.http
 
 
十六、什么是page object设计模式?

1.通俗来讲,就是页面元素放到一个脚本,封装页面元素操作方法,每个页面但是一个page对象方便页面元素的维护

2.测试用例从这个页面对象脚本里面去调用对应方法

 
 
十七、什么是page factory设计模式?
1.通俗来讲,就是把八种元素定位合并为一种方法
(这个我也不知道怎么解释了。。。)
 
 
十八、怎样去选择一个下拉框中的value=xx的option?
1.select类里面提供的方法:select_by_value(“xxx”)
2.xpath的语法也可以定位到
 
 
十九、如何在定位元素后高亮元素(以调试为目的)?
1.js方法,直接让该元素置顶
2.要是点击后没高亮,就用js去修改属性吧(万能的js)
 
二十、什么是断言?

1.assert,判断测试结果与期望结果是否一致

 
 
十二一、如果你进行自动化测试方案的选型,你会选择哪种语言,java,js,python还是ruby?

1.大python威武,js也要略懂

二十二、page object设置模式中,是否需要在page里定位的方法中加上断言?

1.不需要
 
 
二十三、page object设计模式中,如何实现页面的跳转?
1.click方法
 
 
二十四、自动化测试用例从哪里来?
1.自己写的
2.别人写的
(这问题有点脑残,反正不是天上掉下来的)
 
 
二十五、你觉得自动化测试最大的缺陷是什么?

1.需求变动大的时候,维护成本大

二十六、什么是分层测试?

1.数据层

2.接口层

3.UI层

自由发挥吧

 
二十七、webdriver可以用来做接口测试吗?
1.不可以
用大python就可以了妥妥的了
 
总结:从整个的面试题来看,难度还是挺大的,特别是脚本性能的优化这块,如果只是会简单的几个元素定位是完全无法着手优化的。
能提这些问题出来的面试官也是有一定实力的。
学习过程中有遇到疑问的,可以加selenium(python+java) QQ群交流:646645429

Selenium2+python自动化39-关于面试的题的更多相关文章

  1. Selenium2+python自动化39-关于面试的题【转载】

    前言 最近看到群里有小伙伴贴出一组面试题,最近又是跳槽黄金季节,小编忍不住抽出一点时间总结了下, 回答不妥的地方欢迎各位高手拍砖指点.   一.selenium中如何判断元素是否存在? 首先selen ...

  2. Selenium2+python自动化54-unittest生成测试报告(HTMLTestRunner)

    前言 批量执行完用例后,生成的测试报告是文本形式的,不够直观,为了更好的展示测试报告,最好是生成HTML格式的. unittest里面是不能生成html格式报告的,需要导入一个第三方的模块:HTMLT ...

  3. Selenium2+python自动化23-富文本(自动发帖)

    前言 富文本编辑框是做web自动化最常见的场景,有很多小伙伴遇到了不知道无从下手,本篇以博客园的编辑器为例,解决如何定位富文本,输入文本内容 一.加载配置 1.打开博客园写随笔,首先需要登录,这里为了 ...

  4. Selenium2+python自动化24-js处理富文本(带iframe)

    前言 上一篇Selenium2+python自动化23-富文本(自动发帖)解决了富文本上iframe问题,其实没什么特别之处,主要是iframe的切换,本篇讲解通过js的方法处理富文本上iframe的 ...

  5. Selenium2+python自动化7-xpath定位

    前言 在上一篇简单的介绍了用工具查看目标元素的xpath地址,工具查看比较死板,不够灵活,有时候直接复制粘贴会定位不到.这个时候就需要自己手动的去写xpath了,这一篇详细讲解xpath的一些语法. ...

  6. Selenium2+python自动化13-Alert

    不是所有的弹出框都叫alert,在使用alert方法前,先要识别出它到底是不是alert.先认清楚alert长什么样子,下次碰到了,就可以用对应方法解决.alert\confirm\prompt弹出框 ...

  7. Selenium2+python自动化28-table定位

    前言 在web页面中经常会遇到table表格,特别是后台操作页面比较常见.本篇详细讲解table表格如何定位. 一.认识table 1.首先看下table长什么样,如下图,这种网状表格的都是table ...

  8. Selenium2+python自动化43-判断title(title_is)

    From: https://www.cnblogs.com/yoyoketang/p/6539117.html 前言 获取页面title的方法可以直接用driver.title获取到,然后也可以把获取 ...

  9. Selenium2+python自动化61-Chrome您使用的是不受支持的命令行标记:--ignore-certificate-errors

    前言 您使用的是不受支持的命令行标记:--ignore-certificate-errors.稳定性和安全性会有所下降 selenium2启动Chrome浏览器是需要安装驱动包的,但是不同的Chrom ...

随机推荐

  1. WinForm界面开发之 启动界面

    我们在开发桌面应用程序的时候,由于程序启动比较慢,往往为了提高用户的体验,增加一个闪屏,也就是SplashScreen,好处有:1.让用户看到加载的过程,提高程序的交互响应:2.可以简短展示或者介绍程 ...

  2. 按书上学写测试pytest

    慢慢的,这块知识也补好吧. 系统的学习框架,具体的细节,可以边百度边实现. test_three.py '''Test the Task data type.''' from collections ...

  3. CCF CSP 201604-2 俄罗斯方块

    CCF计算机职业资格认证考试题解系列文章为meelo原创,请务必以链接形式注明本文地址 CCF CSP 201604-2 俄罗斯方块 问题描述 俄罗斯方块是俄罗斯人阿列克谢·帕基特诺夫发明的一款休闲游 ...

  4. python处理汉字转拼音pypinyin

    主要是pypinyin 包,官网: http://pypinyin.readthedocs.io/zh_CN/master/index.html jieba包,主要是用来分词的,我之前的博文有介绍:h ...

  5. 前端-JS-BOM和DOM

    前戏 到目前为止,我们已经学过了JavaScript的一些简单的语法.但是这些简单的语法,并没有和浏览器有任何交互. 也就是我们还不能制作一些我们经常看到的网页的一些交互,我们需要继续学习BOM和DO ...

  6. 深入理解SQL的四种连接,左外连接,右外连接,内连接,全连接

    1.内联接(典型的联接运算,使用像 =  或 <> 之类的比较运算符).包括相等联接和自然联接.     内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 stude ...

  7. BoneBlack am335x can0 通讯配置与测试

    准备工具: 1.内核3.14.65,u-boot.文件系统 2.boneblack开发板 3.串口线.电源线,测试线,测试夹 一.配置内核支持CAN通讯 [*] Networking support ...

  8. jdk1.8安装后查看Java -version出错

    最近在电脑行安装了多个jdk的版本 分别是jdk1.6,jdk1.7,jdk1.8三个版本,在配置环境变量的时候,选择的是jdk1.7; 但是奇怪的是,当我在cmd中输入java -version后, ...

  9. request.get_full_path() 和request.path区别

    1. 都是获取request 请求的url路径 2. request.get_full_path() -- 获取当前url,(包含参数) 请求一个http://127.0.0.1:8000/200/? ...

  10. 浅析SDWebImage

    浅析SDWebImage 在日常的开发过程中,如果去优雅的访问网络的图片并去管理每个工程必须要面对的问题,如果想要在工程里面提供易用.简洁.方便管理的解决方案还是很有挑战的,毕竟还要兼顾图片文件的缓存 ...