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 ...
随机推荐
- Python 命令行之旅:深入 click 之选项篇
作者:HelloGitHub-Prodesire HelloGitHub 的<讲解开源项目>系列,项目地址:https://github.com/HelloGitHub-Team/Arti ...
- pat 1077 Kuchiguse(20 分) (字典树)
1077 Kuchiguse(20 分) The Japanese language is notorious for its sentence ending particles. Personal ...
- hdu 1556 Color the ball (技巧 || 线段树)
Color the ballTime Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tot ...
- 半自动安装 linux 系统
基于图形软件生成应答文件,实现半自动化安装 linux 操作系统 1.yum install -y system-config-kickstart 安装生成自动化安装操作系统的应答文件 2.syste ...
- thinking in JAVA 编译记录
编辑/编译<thinking in JAVA>源代码 一.下载源代码 首先,我阅读的是<thinking in JAVA>第四版,因此按照书中提供的链接找到了mindview主 ...
- jQuery简单面试题
干货 | jQuery经典面试题及答案精选 面试题来啦! 毫无疑问,JavaScript是一门如此有用,但总是被低估的一门语言. 在 jQuery 粉墨登场之前,我们曾经会写出冗长的JavaScrip ...
- 勾股数专题-SCAU-1079 三角形-18203 神奇的勾股数(原创)
勾股数专题-SCAU-1079 三角形-18203 神奇的勾股数(原创) 大部分的勾股数的题目很多人都是用for来便利,然后判断是不是平方数什么什么的,这样做的时候要对变量类型和很多细节都是要掌握好的 ...
- PL真有意思(七):数据抽象和面向对象
前言 在之前的名字.作用域那篇提到模块类型,它使程序员可以从一个给定抽象出发,通过实例化产生多个实例:再后面是类,它使程序员可以定义一族相关的抽象. 在这一篇里,我们会来看一下面向对象程序设计及其三个 ...
- Mysql操作之查询语句
查询语句: select 查询列表 from 表名 where 筛选条件; 去重:select distinct 查询列表...... 选择全部:* 起别名:select 查询列表 as 别名 fro ...
- mybatis精讲(四)--ObjectFactory
目录 前言 mybatis的ObjectFactory 源码 setProperties create instantiateClass 使用场景 # 加入战队 微信公众号 前言 ObjectFact ...