js下拉 selenium_selenium 常见面试题以及答案(Java版)
1.怎么 判断元素是否存在?
判断元素是否存在和是否出现不同, 判断是否存在意味着如果这个元素压根就不存在, 就会抛出NoSuchElementException
这样就可以使用try catch,如果catch到NoSuchElementException 就返回false
2.如何判断元素是否出现?
判断元素是否出现,存在两种情况,一种是该元素压根就没有,自然不会出现;另外一种是有这样的元素,但是是hidden状态
可以通过先判断是否存在,如果不存在返回false;如果存在再去判断是否displayed
3. 怎样选择下拉菜单的元素
下拉菜单分两种,一种是直接使用select标签的,这种情况可以直接使用selenium API
参考:http://www.cnblogs.com/tobecrazy/p/4570494.html
WebElement selector = driver.findElement(By.id("Selector"));Select select = new Select(selector);选择select的option有以下三种方法selectByIndex(int index) 通过indexselectByVisibleText(String text) 通过匹配到的可见字符selectByValue(String value) 通过匹配到标签里的value
第二种下拉菜单不是通过select实现的,可以通过JS进行操作
类似这样的:http://css3menu.com/ (关于怎么使用DevTools 请自行百度,不解释)
那么这样的菜单该怎么去选取?
可以收工演示一下,第一步鼠标移动到how to use,此时菜单出现;第二步,点击Technical Question
要实现第一步,使用selenium 的Action clickAndHold,接着就可findByElement进行操作
WebElement menu = driver.findElement(By.xpath("//span[.='How to Use']")); Actions action = new Actions(driver); action.clickAndHold(menu).build().perform(); WebElement technicalQuestion = driver.findElement(By.xpath( "//ul[@id='css3menu_top']/li[position()=3]/div[@class='submenu']/div[@class='column']//a[contains(text(),'Technical')]")); technicalQuestion.click();
4. selenium 有几种定位方式,你最常用哪种, 为什么?
selenium有八种定位方式,和name有关的3个ByName,ByClassName,ByTagName
和link有关的2个ByLinkText,ByPartialLinkText
和id有关的1个ById
剩下两个全能的ByXpath和ByCssSelector
我最常用的事ByXpath(或CssSelector)因为很多情况下,html标签的属性不够规范,无法通过单一的属性定位,这个时候就只能使用xpath可以去重实现定位唯一element
事实上定位最快的应当属于ById,因为id是唯一的,然而大多数开发并没有设置id
5.去哪网面试题Java实现
一、 UI自动化测试1、 Qunar机票搜索场景1) 访问Qunar机票首页http://flight.qunar.com,选择“单程”,输入出发、到达城市,选择today+7日后的日期,点“搜索”,跳转到机票单程搜索列表页。2) 在列表页停留1分钟,至到页面上出现“搜索结束”。3) 如果出现航班列表,对于出现“每段航班均需缴纳税费”的行随机点选“订票”按钮,在展开的列表中会出现“第一程”、 “第二程”;对于没有出现“每段航班均需缴纳税费”的行随机点选“订票”按钮,在展开的列表底部中会出现“报价范围”4) 如果不出现航班列表,则页面会出现“该航线当前无可售航班”
参考我的blog, http://www.cnblogs.com/tobecrazy/p/4752684.html
6. 如何去定位页面上动态加载的元素?
触发动态事件事件,进而findElemnt
如果是动态菜单,需要一级一级find
7.如何去定位属性动态变化的元素?
属性动态变化是指该element没有固定的属性值,所以只能通过相对位置定位
比如通过xpath的轴, parent/following-sibling/precent-sibling等
另外也可以尝试findbyelements遍历
8.怎么提高selenium脚本的自动化执行效率?
- 优化测试用例,尽可不使用 sleep,减少使用ImplicitlyWait
- ,而使用selenium的wait/FluentWait,这样可以优化等待时间
- 使用selenium grid,通过testng实现并发执行
- 针对一些不稳定的动态控件通过JS实现操作
- 重载testng的listener实现retry机制,提高测试用例成功率
- 减少使用IE的driver,IE执行效率太低!!!
9. webdriver 的原理是什么?
参考:http://www.cnblogs.com/tobecrazy/p/5034408.html
10. selenium中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定是可以点击的?
参考:http://www.cnblogs.com/tobecrazy/p/4817946.html
- 通过封装find方法实现waitforEmelentPresent,这样在对元素进行操作之前保证元素被找到,进而提高成功率
- 在对元素操作之前,比如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);
js下拉 selenium_selenium 常见面试题以及答案(Java版)相关推荐
- java selenium_selenium 常见面试题以及答案(Java版)
1.怎么 判断元素是否存在? 判断元素是否存在和是否出现不同, 判断是否存在意味着如果这个元素压根就不存在, 就会抛出NoSuchElementException 这样就可以使用try catch,如 ...
- 分享 Python 常见面试题及答案(下)
程序IT圈 www.cxyquan.com 优秀程序猿技术公众号 之前分享了一篇很全的Java的面试题 分享 Java 常见面试题及答案(上) 分享 Java 常见面试题及答案(下) 由于篇幅过长,这 ...
- JavaScript常见面试题和答案
原文地址:https://www.yisu.com/zixun/117910.html 这篇文章将为大家详细讲解有关JavaScript常见面试题和答案,小编觉得挺实用的,因此分享给大家做个参考,希望 ...
- Spring常见面试题及答案汇总1000道(春招+秋招+社招)
Spring面试题以及答案整理[最新版]Spring高级面试题大全(2021版),发现网上很多Spring面试题都没有答案,所以花了很长时间搜集,本套Spring面试题大全,汇总了大量经典的Sprin ...
- Java多线程常见面试题及答案汇总1000道(春招+秋招+社招)
Java多线程面试题以及答案整理[最新版]Java多线程高级面试题大全(2021版),发现网上很多Java多线程面试题都没有答案,所以花了很长时间搜集,本套Java多线程面试题大全,汇总了大量经典的J ...
- MySQL常见面试题及答案汇总1000道(春招+秋招+社招)
MySQL面试题以及答案整理[最新版]MySQL高级面试题大全(2021版),发现网上很多MySQL面试题都没有答案,所以花了很长时间搜集,本套MySQL面试题大全,汇总了大量经典的MySQL程序员面 ...
- Jvm常见面试题及答案汇总1000道(春招+秋招+社招)
Jvm面试题以及答案整理[最新版]Jvm高级面试题大全(2021版),发现网上很多Jvm面试题都没有答案,所以花了很长时间搜集,本套Jvm面试题大全,汇总了大量经典的Jvm程序员面试题以及答案,包含J ...
- Dubbo常见面试题及答案汇总1000道(春招+秋招+社招)
Dubbo面试题以及答案整理[最新版]Dubbo高级面试题大全(2021版),发现网上很多Dubbo面试题都没有答案,所以花了很长时间搜集,本套Dubbo面试题大全,汇总了大量经典的Dubbo程序员面 ...
- 总结Java常见面试题和答案
转载自 总结Java常见面试题和答案 int和Integer有什么区别? 答:int是java的原始数据类型,Integer是java为int提供的封装类,java为每个原始数据类型都提供了封装 ...
最新文章
- Reading Paper
- Java中的基本类型变量储存方式
- salero网店的官方邮箱设置
- [css] 你有用过animation-fill-mode属性吗?它有什么应用场景
- 改革开放成就我 感谢祖国
- 数字计算机的分类依据,数字计算机模拟计算机分类依据
- 【Oracle】配置客户端监听
- 将图的广度优先遍历在邻接矩阵和邻接表存储结构上分别实现_《青岛大学-王卓-数据结构》B站学习...
- Elasticsearch在后台启动
- 2019中国软件百强榜:华为、阿里、百度、腾讯位列前四
- Opencv笔记(四)——绘图函数
- “双减”背景下初中数学差异化作业设计研究——海门区“十四五”规划课题开题报告
- 黑暗幽灵(DCM)木马详细分析
- java.lang.IllegalStateException: Current state = FLUSHED, new state = CODING_END问题查找
- ARCGIS---栅格影像矢量化(含二级化/二值化、栅格清理)
- 帝国时代3如何快速实现低成本训练领事馆其它兵种
- 微信PC端或将支持自动登录?网友直呼好家伙
- xmanager连接linux终端,Xmanager连接CentOS 7远程桌面
- win10装sql2000卡在选择配置_win10系统安装SQL2000卡在MADC不动的解决方法
- csgo准星设置代码_csgo准星设置指令