Selenium自动化面试题
(1)selenium的工作原理?
① 脚本启动driver
② driver去驱动浏览器作为远程服务器
③ 执行脚本发送请求
④ 服务器解析请求作出相应操作,并返回给客户端(脚本)
(2)selenium自动化页面元素找不到存在异常的原因?
① 元素定位错误
② 页面加载时间过慢,需要查找的元素程序已经完成,单页面还未加载,此时可以加载页面等待时间
③ 有可能元素包含在iframe或者frame里面,需要切换。
(3)如何去定位属性动态变化的元素?
属性动态变化是指该element没有固定的属性值,只能通过相对位置定位。
第一种方法:用findelements遍历
第二种方法:通过xpath的轴 parent / following-sibling / precent-sibling
(4)如何去定位页面上动态加载的元素?
触发动态事件,继而findelement;如果是动态菜单,需要一级一级的find。
(5)selenium调用js(execute_script),有哪些场景?
① 对input执行输入
② 对富文本框的操作
③ 滚动到指定位置操作
(6)selenium如何处理web弹窗?js弹窗?
需要使用driver.switch_to.alert()
(7)selenium可以处理window弹窗吗?
selenium本身是不可以处理windows弹窗的,但是可以借助AutoIT小工具来完成对windows弹窗的操作。比如 上传下载附件等
(8)如何在定位元素后高亮元素(以调试为目的)?
使用javascript将元素的border或者背景颜色改成黄色或其他颜色即可
(9)selenium是否支持桌面应用软件的自动化测试?
不支持。selenium是根据网页元素的属性来地范围元素的
(10)selenium是否有读取excel文件的库?
没有,需要借助第三方工具。例如Apache PIO插件
(11)selenium是否可以向页面发送鼠标滚轮操作?
不能。
(12)如何在webdriver中调用应用程序?
driver.get('url') 或者 driver.navigate().to('url')
(13)selenium中常见的异常?
NoSuchElementException 找不到页面元素异常
ElementNoInteractac tableException
(14)selenium为什么不推荐使用xpath定位?
selenium使用xpath定位时采用遍历页面的方式,性能指标较差。另外xpath定位有通过绝对路径定位的,有时会不准确;
而用css选择器定位比较简洁,运行速度更快,通常用于性能要求严格的场景。
(15)如何判断一个页面上元素是否存在?
法1:用try...except 在代码块加上
法2:用elements定义组元素方法 然后根其元素个数len()<1 存在返回True, 不存在则返回False
法3:结合WebDriverWait和excepted_conditions条件判断(强烈推荐)
显示等待,每间隔1秒判断一次,30秒超时,存在返回True,不存在则返回False
(16)如何定位动态元素?
动态元素有两种情况:
一个是属性动态,定位时,若id是动态的,就不要用id定位,用其他定位元素方法
另一个还是这个元素一会在页面上方,一会在下方,飘忽不定,定位方法也是一样,根据元素属性定位(元素的tag name属性是不会变的,动的只是class属性和style属性)
(17)如何通过子元素定位父元素?
通过父元素定位子元素,可以通过二次定位来找到。
第一种:通过子元素定位父元素,selenium提供了parent方法,但是只能定位到父元素,却不能获取元素属性,也不能操作。
第二种:通过xpath的语法直接定位。 如.//*[@name="hello"]/.. 两个点代表父级元素。
(18)如何截取一个元素的图片,不要截取全部图片?
首选截取当前页面并自定义保存
然后根据要截取元素图片的属性来获取该元素的坐标和大小 ele.location ele.size
然后分别left = ele.location['x']
top = ele.location['y']
right = ele.location['x'] + ele.size['width']
bottom = ele.location['y'] + ele.size['height']
获取该元素的图片的坐标大小
最后,再次打开刚开始保存的,通过image类中的crop方法(相当于拷贝该元素的一个矩形区域),然后做保存操作就可以了。
(19)一个元素明明定位了,点击无效(也没报错),如何解决?
使用js点击,selenium有时候点击元素时会失效
# js 点击
js = 'document.getElementById('baidu').click()'
driver.execute_script(js)
(20)如何提高脚本的稳定性?
首先只要页面一直没变过,说明定位方法是没问题的。
优化方向:① 自己写相对路径,多用id为节点查找,少用右键复制xpath,那种不稳定。
② 第二个影响因素就是等待了,sleep等待尽量少用(影响执行时间)
③ 定位元素方法重新封装,结合WebDriverWait和excepted_conditions判断元素方法,自己封装一套定位元素方法
(21)提高selenium脚本的执行速度方式?
减少不必要的操作。
页面加载过多并且不影响测试,可设置超时时间中断页面加载。
设置等待时间时,可以sleep()固定的时间,检测到元素出现后中断等待也可以提高速度。
配置testNG实现多线程,在编写测试用例时,一定要实现松耦合,在服务器允许的情况下尽量设置多线程运行,提高执行速度。
(22)selenium自动化时,在平时遇到过那些问题?如何解决的?
比如动态id 、有iframe的情况、没加等待等因素
(23)selenium中隐藏元素定位,你该如何做?
隐藏元素可以正常定位到,只是不能操作(定位元素和操作元素是两码事,操作元素是指click 、clear 、send_keys等这些方法)。我们可以用js来操作隐藏元素。js和selenium不同,只有页面上有的元素(在dom里面的)都能正常操作。
(24)上传图片的几种方式?
send_keys和AutoIT工具实现
(25)截图应当怎么操作?
driver.get_screenshot_as_file('C:\test.jpg')
Selenium自动化面试题的更多相关文章
- selenium 常见面试题以及答案
		1.怎么 判断元素是否存在? 判断元素是否存在和是否出现不同, 判断是否存在意味着如果这个元素压根就不存在, 就会抛出NoSuchElementException 这样就可以使用try catch,如 ... 
- Python2.6.6执行selenium自动化
		系统类型: [root@bogon home]# uname -aLinux bogon 2.6.32-431.el6.x86_64 #1 SMP Sun Nov 10 22:19:54 EST 20 ... 
- Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析
		加速IE浏览器自动化执行效率:Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析 1.技术背景 在Web应用中,用户通过键盘在输入框中输入值和鼠标点击按钮,链 ... 
- Selenium2学习-036-WebUI自动化实战实例-034-JavaScript 在 Selenium 自动化中的应用实例之六(获取 JS 执行结果返回值)
		Selenium 获取 JavaScript 返回值非常简单,只需要在 js 脚本中将需要返回的数据 return 就可以,然后通过方法返回 js 的执行结果,方法源码如下所示: /** * Get ... 
- Selenium2学习-032-WebUI自动化实战实例-030-JavaScript 在 Selenium 自动化中的应用实例之五(高亮标示元素)
		在自动化脚本编写过程中,操作元素之前,需要对元素进行高亮显示(通过修改元素的边框样式),同时进行截图,以记录操作的元素对象.在实际应用中较为少见,通常用于演示,或者发生错误时的屏幕截图捕捉,用于错误报 ... 
- Selenium2学习-031-WebUI自动化实战实例-029-JavaScript 在 Selenium 自动化中的应用实例之四(获取元素位置和大小)
		通过 JS 或 JQuery 获取到元素后,通过 offsetLeft.offsetTop.offsetWidth.offsetHeight 即可获得元素的位置和大小,非常的简单,直接上源码了,敬请参 ... 
- Selenium2学习-027-WebUI自动化实战实例-025-JavaScript 在 Selenium 自动化中的应用实例之三(页面滚屏,模拟鼠标拖动滚动条)
		日常的 Web UI 自动化测试过程中,get 或 navigate 到指定的页面后,若想截图的元素或者指定区域范围不在浏览器的显示区域内,则通过截屏则无法获取相应的信息,反而浪费了无畏的图片服务器资 ... 
- Selenium2学习-022-WebUI自动化实战实例-020-JavaScript 在 Selenium 自动化中的应用实例之二(获取浏览器显示区域大小)
		前几篇文章中简略概述了,如何获取.设置浏览器窗口大小,那么我们该如何获取浏览器显示区域的大小呢?此文讲对此进行简略概述,敬请各位小主参阅.若有不足之处,敬请各位大神指正,不胜感激! 获取浏览器显示区域 ... 
- Selenium2学习-011-WebUI自动化实战实例-009-JavaScript 在 Selenium 自动化中的应用实例之一(赋值)
		通常在编写 Selenium 的 WebUI 自动化脚本时,有些元素不易定位元素,或有些元素为隐藏的(此时用 WebElement.getText() 获取其值的时候,返回的结果为空),对日常的 UI ... 
随机推荐
- HTML 转 PDF 之 wkhtmltopdf
			wkhtmltopdf是一个可以把html转为pdf的插件,有windows.linux等平台的版本,比较简单 官网下载 https://wkhtmltopdf.org/downloads.html ... 
- mybatis的parameterType为map,map里带有多个list
			我写这个主要是为了解决sql注入 原sql有sql注入, 结果:select req_msg_id from account_message_info where req_msg_id in ('12 ... 
- secureCRT安装与激活
			SecureCRT安装及激活方式 百度网盘地址: SecureCRT及激活软件的地址: 1. 安装secureCRT 百度网盘下载,点击scrt814-x64.exe,按照提示安装secureCRT, ... 
- ndk编译出来的executable动态库入口函数的参数错乱
			早些时间用ndk编译带main入口函数的动态库,测试可运行.今天要作它用时,发现在这个入口函数并没有传入正确的参数. hello.cpp有main函数,用ndk分别编译成可执行文件和动态库文件,使两者 ... 
- 开始逆向objc基础准备(一)简单认识一下arm32,以及与x86汇编指令类比
			ARM32体系中有31或33个通用寄存器,没有特定的某种态下有r0-r15一共16个寄存器,快速中断态下有另一组r8-r12备份寄存器,在用户态和系统态之外其它态下都各自有一组r13-r14备份寄存器 ... 
- Vue学习之Vue模拟后台数据
			前后端项目的开发,需要前端和后端同时进行开发,有时后端开发人员还未完成API接口可以提供给前端调用,因此就需要模拟前端请求后端接口,后端返回数据.一般开发中都是返回json数据格式来完成前后端的交互. ... 
- 关于Java 值传递深度分析
			首先说观点:java只有值传递没有引用传递 然后再来看看值传递与引用传递两者的定义 值传递(pass by value)是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改, ... 
- iOS核心动画高级技巧 - 3
			7. 隐式动画 隐式动画 按照我的意思去做,而不是我说的. -- 埃德娜,辛普森 我们在第一部分讨论了Core Animation除了动画之外可以做到的任何事情.但是动画是Core Animation ... 
- node  后台使用增删改查(4)
			无论node还是java增删改查都是一样的原理,变得是配合框架使用时候有简便方法而已. 这里我接着上一篇开始讲,使用同一个数据库(数据库创建)这里必须创建了数据库 优化:为了维护方便这里我们把sql语 ... 
- [Odoo12基础教程]之第一篇-创建Todo应用
			声明: 本教程基于 Ruter 老师的 [Odoo基础教程系列] ,Ruter老师教程的链接地址为:Odoo基础教程系列 . 至于为什么已经有了Ruter老师的教程,还要自己再搬移一份呢?是基于一 ... 
