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);

java selenium_selenium 常见面试题以及答案(Java版)相关推荐

  1. Java多线程常见面试题及答案汇总1000道(春招+秋招+社招)

    Java多线程面试题以及答案整理[最新版]Java多线程高级面试题大全(2021版),发现网上很多Java多线程面试题都没有答案,所以花了很长时间搜集,本套Java多线程面试题大全,汇总了大量经典的J ...

  2. js下拉 selenium_selenium 常见面试题以及答案(Java版)

    1.怎么 判断元素是否存在? 判断元素是否存在和是否出现不同, 判断是否存在意味着如果这个元素压根就不存在, 就会抛出NoSuchElementException 这样就可以使用try catch,如 ...

  3. 总结Java常见面试题和答案

    转载自  总结Java常见面试题和答案 int和Integer有什么区别?   答:int是java的原始数据类型,Integer是java为int提供的封装类,java为每个原始数据类型都提供了封装 ...

  4. java常见面试题及答案 1-10(基础篇)

    java常见面试题及答案 1.什么是Java虚拟机?为什么Java被称作是"平台无关的编程语言"? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程.Java 源文件被 ...

  5. 「高级java工程师」常见面试题及其答案(持续更新)

    「java工程师」常见面试题及其答案请见: 「java工程师」常见面试题及其答案(持续更新)_好人老李的博客-CSDN博客 目录 java基础 常用的 jvm 调优方法? OOM的常见场景及其原因.解 ...

  6. 「java工程师」常见面试题及其答案(持续更新)

    「高级java工程师」常见面试题及其答案: 「高级java工程师」常见面试题及其答案(持续更新)_好人老李的博客-CSDN博客 目录 java基础 面向对象与面向过程的区别? JRE.JDK.JVM的 ...

  7. java常见面试题及答案 1-10

    java常见面试题及答案 1.什么是Java虚拟机?为什么Java被称作是"平台无关的编程语言"? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程.Java 源文件被 ...

  8. java常见面试题及答案 11-20(JVM)

    11.JVM内存分哪几个区,每个区的作用是什么? java虚拟机主要分为以下一个区: 方法区: 1. 有时候也成为永久代,在该区内很少发生垃圾回收,但是并不代表不发生GC,在这里进行的GC主要是对方法 ...

  9. Java开发常见面试题详解(LockSupport,AQS,Spring循环依赖,Redis)_3

    Java开发常见面试题详解(LockSupport,AQS,Spring循环依赖,Redis)_3 总览 问题 详解 String.intern()的作用 link LeetCode的Two Sum题 ...

最新文章

  1. 优秀!21岁读博,26岁博士毕业即为副教授,同年又晋升教授和博导!
  2. 分布式调用跟踪系统的设计和应用
  3. python3 用queue做历史记录
  4. 娓娓道来Promise
  5. android加载圈,SwipeRefreshLayout加载圈不会隐藏在android中
  6. 用 Flink 取代 Spark Streaming,知乎实时数仓架构演进【推荐】
  7. java jar包 平滑重启,nginx 平滑重启的实现方法
  8. svm回归matlab工具箱很慢,PSO优化SVM参数进行回归预测,结果很不理想
  9. 《陶哲轩实分析》引理6.7.1:(指数运算的连续性)
  10. 线性调频信号与脉冲压缩
  11. Cesium中的相机—方向余弦阵
  12. USACO 1359. 城堡(并查集)
  13. 301代码php代码在哪里加,301转向设置及代码及方法详解
  14. 笔记本显示器驱动更新
  15. 真实力好口碑!Fortinet又双叒叕获评Gartner“客户之选”荣誉称号
  16. cad版本怎么在线转换?软件操作更高效
  17. IOS汉字转拼音首字母
  18. matlab极坐标画椭圆,matlab怎么画极坐标
  19. 5.数据类型详解-字符串
  20. Nuxt - 网站接入 51LA 网站统计详细教程(提供 51LA.js 官方插件与引入教程)

热门文章

  1. 【译】Immutable.js : 操作 Set -8
  2. [vagrant]vagrant centos静态ip设置
  3. 网络基础:ACL访问控制例表
  4. arp病毒利用的Javascript技术
  5. linux的常用操作——共享库
  6. 王道计算机网络 应用层整理 超详细版
  7. 计算机网络(十二)-信道划分介质访问控制-信道复用
  8. Leetcode--20. 有效的括号
  9. jdbc获取结果行数,如何获取JDBC中的行数?
  10. druid seata 配置_架构设计 | 基于Seata中间件,微服务模式下事务管理