java 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

f942bd0e94214c2a80f03523033ab337
WebElement selector = driver.findElement(By.id("Selector"));Select select = new Select(selector);选择select的option有以下三种方法selectByIndex(int index) 通过indexselectByVisibleText(String text) 通过匹配到的可见字符selectByValue(String value) 通过匹配到标签里的value
f942bd0e94214c2a80f03523033ab337

第二种下拉菜单不是通过select实现的,可以通过JS进行操作

类似这样的:http://css3menu.com/ (关于怎么使用DevTools 请自行百度,不解释)

f3dd5fea88b242bbb6354217309556b1

那么这样的菜单该怎么去选取?

可以收工演示一下,第一步鼠标移动到how to use,此时菜单出现;第二步,点击Technical Question

要实现第一步,使用selenium 的Action clickAndHold,接着就可findByElement进行操作

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/501339.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于HTML的盒子的一些小问题

最近在开发的时候发现一个小问题&#xff0c;<DIV>我们很熟悉的一个盒子元素 关于他的描述 1.按照我们正常人的思维逻辑 编写好一个DIV盒子&#xff0c;然后再在盒子里面添加边框border、内边距padding、内容&#xff0c;这是我们的思维逻辑 但是DIV的编写会随着你添加…

语义网络分析图怎么做_怎么去分辨化工壶,光说可能大家还是会有疑惑,所以做了几个图...

网友们经常会拿一些壶出来&#xff0c;拍图给我看&#xff0c;问我会不会是化工壶&#xff0c;说到底&#xff0c;还是不放心自己手头上的紫砂壶&#xff0c;怕对自身健康造成影响&#xff0c;在这里&#xff0c;小编特地编辑这一段&#xff0c;教大家怎么去分辨化工壶&#xf…

CSS3特效之转化(transform)和过渡(transition)

CSS3特效之转化&#xff08;transform&#xff09;和过渡&#xff08;transition&#xff09; 在对动画深入之前&#xff0c;我们需要先了解它的一些特性&#xff0c;CSS3的转化&#xff08;transform&#xff09;和过渡&#xff08;transition&#xff09;。有人可能会有疑…

java如何保证redis设置过期时间的原子性_分布式锁用 Redis 还是 Zookeeper

在讨论这个问题之前&#xff0c;我们先来看一个业务场景&#xff1a;系统A是一个电商系统&#xff0c;目前是一台机器部署&#xff0c;系统中有一个用户下订单的接口&#xff0c;但是用户下订单之前一定要去检查一下库存&#xff0c;确保库存足够了才会给用户下单。由于系统有一…

转 安卓解决 IDEA 下 struts.xml 中 extends=“struts-default“ 报红的问题

解决 IDEA 下 struts.xml 中 extends"struts-default" 报红的问题 现象 在IDEA中配置struts.xml时 extends"struts-default" 报红&#xff0c;配置拦截器时属性无预选项提示&#xff0c;也爆红。 struts.xml本身的配置并没有错误。 解决办法 CtrlShiftAl…

系统新模块增加需要哪些步骤_人工智能之父的问题解决策略:模块化

最近主题阅读马文明斯基(Marvin Minsky) 和西摩佩珀特(Seymour Papert)两位人工智能大师&#xff0c;关于思维&#xff0c;关于教育的书籍。其中马文被称为「人工智能之父」。两人都非常重视过程模块化。复杂问题的解决需要系统性&#xff0c;也很少一次做对&#xff0c;要通过…

小白学Linux(一:开门见山)

目录 1.javaEE&#xff0c;先搭环境再敲码 2.Linux大数据 3.Python 4. Linux的学习方向 5. Linux的进阶段位 6.下面开始进入实际操作环节 第一步.安装虚拟机软件 第二步.在虚拟机里面安装一个别人开发好的Centos系统&#xff08;可以在此系统中写Linux指令&#xff0c;…

vb net 模拟 ctrl+c_8款优秀的.NET开发工具,收藏了

NET是一个重要的应用程序开发平台&#xff0c;因为它安全、稳定、易于学习和实现。今天小编给就给大家介绍8款优秀的.NET开发工具&#xff0c;有需要的小伙伴可以收藏转发哦。1、ChocolatyChocolaty是一个Windows软件包管理器&#xff0c;这个工具的重要之处在于&#xff0c;它…

卸载后以前拍的视频会删除吗_可立拍!苹果自己的视频编辑App是一个被忽视的好工具...

手机预装应用总是不如三方产品&#xff1f;看到这个问题&#xff0c;你是不是会下意识反驳&#xff1a;iPhone自带 app 就很好用啊&#xff01;的确如此&#xff0c;iPhone 的《Pages》《备忘录》&#xff0c;这些 app 的优秀表现改变了不少人「拿到新机就想卸载预装应用」的想…

解决:Linux中的CentOS 7的火狐浏览器不能访问服务器

今天安装CentOS 7的时候配置好环境&#xff0c;发现火狐不能连网 分析了一些可能是我的虚拟机网络配置没开&#xff0c;因此我总结了两个方法 1.检查虚拟机的编辑--》虚拟网络编辑器--》看看是否是NAT连接 2.搜索计算机的服务--》找到VMware DHCP Service和VMware NAT Servi…

pyqt5 自定义控件_PyQt5学习笔记(十六)Pyinstaller打包与SQLite数据库

终于到了最后一章了QAQ&#xff0c;第一次写4万字以上的笔记分享&#xff0c;最近也在忙科创和CV的比赛&#xff0c;所以笔记会显得比较粗糙。其实吧分享这个笔记很大一部分是为了让自己记得更牢&#xff0c;网上翻阅自己的笔记也方便&#xff0c;如果有讲解注释不清楚的地方欢…

依赖第三方库时出现的问题:Manifest merger failed : uses-sdk:minSdkVersion 15 cannot be smaller than version 16

导入第三方库时出现了sdk版本不兼容问题 为我们app的module所支持的sdk最低版本与依赖module的sdk最低版本不一致 把15--》16即可

Linux基本目录结构

上一步我们已经搭建好实验环境了&#xff0c;这一节就来实际操作一下&#xff0c;到底什么是CentOS&#xff0c;到底什么是Linux操作系统&#xff0c;写什么&#xff0c;如何去做&#xff0c;如何去打开&#xff0c;下面我们带着这些疑惑展开这一节 1.打开终端&#xff0c;有些…

解决:VMware DHCP Service 服务无法启动

今天在布置项目的时候发现VMware DHCP Service 服务无法启动&#xff0c;连网络也连接不了 解决办法是 搞定 解决后验证Linux又可以连接上网络了

bmp文件格式_一次性解决CAD转换成BMP格式图片的问题

关于BMP格式图片&#xff0c;可能很多小伙伴都遇到得比较多&#xff0c;但在这里还是稍微解释一下吧。它是Windows操作系统中的标准图像文件格式&#xff0c;大家都知道BMP格式的图片都非常大&#xff0c;那是因为它没有经过任何压缩。当然&#xff0c;关于BMP文件当中蕴含着哪…

Linux如何配置网络IP地址

首先&#xff0c;脑子思路一定要清晰我们为什么要配置ip地址&#xff0c;我们的电脑一般是一个物理网卡&#xff0c;那么按照正常情况&#xff0c;我们的虚拟机里的Linux是和windows共享同一个物理网卡的&#xff0c;所以很正常&#xff0c;一个物理网卡不可能仅仅只有一个ip地…

shell 字典_腾讯T4周末不陪对象,就为了手打这份shell编程笔记

这个周末&#xff0c;为了某些原因&#xff0c;我把shell编程的一些基础知识进行了相应的整理&#xff0c;这里分享给大家&#xff0c;大家在看的时候&#xff0c;有什么问题可以在下方评论区给我留言呀&#xff0c;欢迎转发自己纯手打&#xff0c;原创不易&#xff0c;谢谢支持…

Linux如何从普通用户切换到root用户

第一步&#xff1a;打开终端 pwd&#xff1a;Print Working Directory &#xff08;查看当前路径&#xff09; 默认安装完成之后并不知道root用户的密码&#xff0c;那么如何应用root权限呢&#xff1f; (1)sudo 命令 这样输入当前管理员用户密码就可以得到超级用户的权限…

css盒子模型_说说css盒子模型

什么是盒模型引用MDN官方的解释&#xff1a;当对一个文档进行布局&#xff08;lay out&#xff09;的时候&#xff0c;浏览器的渲染引擎会根据标准之一的 CSS 基础框盒模型&#xff08;CSS basic box model&#xff09;&#xff0c;将所有元素表示为一个个矩形的盒子&#xff0…

基于IPP库将FFT函数封装为C++类库并导出为dll(固定接口支持更新)

dll导出C++类的方式 C++类通常有3中导出方式,具体可以参考这篇博客: Dll导出C++类的3种方式 简单来总结一下: 一、纯C语言方式,类似显式传递this指针 缺点 调用创建对象函数的时候编译器无法判断类型是否匹配需要手动调用Release函数,一旦忘记则会造成内存泄露如果导出…