(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自动化面试题的更多相关文章

  1. selenium 常见面试题以及答案

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

  2. 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 ...

  3. Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析

    加速IE浏览器自动化执行效率:Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析 1.技术背景       在Web应用中,用户通过键盘在输入框中输入值和鼠标点击按钮,链 ...

  4. Selenium2学习-036-WebUI自动化实战实例-034-JavaScript 在 Selenium 自动化中的应用实例之六(获取 JS 执行结果返回值)

    Selenium 获取 JavaScript 返回值非常简单,只需要在 js 脚本中将需要返回的数据 return 就可以,然后通过方法返回 js 的执行结果,方法源码如下所示: /** * Get ...

  5. Selenium2学习-032-WebUI自动化实战实例-030-JavaScript 在 Selenium 自动化中的应用实例之五(高亮标示元素)

    在自动化脚本编写过程中,操作元素之前,需要对元素进行高亮显示(通过修改元素的边框样式),同时进行截图,以记录操作的元素对象.在实际应用中较为少见,通常用于演示,或者发生错误时的屏幕截图捕捉,用于错误报 ...

  6. Selenium2学习-031-WebUI自动化实战实例-029-JavaScript 在 Selenium 自动化中的应用实例之四(获取元素位置和大小)

    通过 JS 或 JQuery 获取到元素后,通过 offsetLeft.offsetTop.offsetWidth.offsetHeight 即可获得元素的位置和大小,非常的简单,直接上源码了,敬请参 ...

  7. Selenium2学习-027-WebUI自动化实战实例-025-JavaScript 在 Selenium 自动化中的应用实例之三(页面滚屏,模拟鼠标拖动滚动条)

    日常的 Web UI 自动化测试过程中,get 或 navigate 到指定的页面后,若想截图的元素或者指定区域范围不在浏览器的显示区域内,则通过截屏则无法获取相应的信息,反而浪费了无畏的图片服务器资 ...

  8. Selenium2学习-022-WebUI自动化实战实例-020-JavaScript 在 Selenium 自动化中的应用实例之二(获取浏览器显示区域大小)

    前几篇文章中简略概述了,如何获取.设置浏览器窗口大小,那么我们该如何获取浏览器显示区域的大小呢?此文讲对此进行简略概述,敬请各位小主参阅.若有不足之处,敬请各位大神指正,不胜感激! 获取浏览器显示区域 ...

  9. Selenium2学习-011-WebUI自动化实战实例-009-JavaScript 在 Selenium 自动化中的应用实例之一(赋值)

    通常在编写 Selenium 的 WebUI 自动化脚本时,有些元素不易定位元素,或有些元素为隐藏的(此时用 WebElement.getText() 获取其值的时候,返回的结果为空),对日常的 UI ...

随机推荐

  1. Linux常用命令复习

    1> 查看文件信息:ls ls是英文单词list的简写,其功能为列出目录的内容,是用户最常用的命令之一,它类似于DOS下的dir命令. Linux文件或者目录名称最长可以有265个字符,“.”代 ...

  2. 启动Spring Tool Suite 4时出现 could not find tools.jar spring boot live hovers....弹窗

    第一步:检查一下STS启动时的加载环境 Help  —› About Spring Tool Suite 4 —› Installation Details —› Configuration 本人已经 ...

  3. [Verilog] 从系统时钟转换出想要的时钟

    如何50MHZ时钟转换出一个250KHZ的时钟出来? 假如系统时钟是50MHZ,然后想得到250KHZ的新时钟,那么50MHZ / 250KHZ = 200倍,然后令k=200,程序如下: ; :] ...

  4. 分组取topN

    假设有这样一个文件,文件内容如下 class1 class2 class1 class1 class2 class2 class1 class2 class1 class2 要求按照班级分组取出每个班 ...

  5. java编程思想第四版第七章习题

    (略) (略) (略) (略) 创建两个带有默认构造器(空参数列表)的类A和类B.从A中继承产生一个名为C的新,并在C内创建一个B类的成员.不要给C编写构造器.创建一个C类的对象并观察其结果. pac ...

  6. 力扣(LeetCode)颠倒二进制位 个人题解

    颠倒给定的 32 位无符号整数的二进制位. 示例 1: 输入: 00000010100101000001111010011100 输出: 0011100101111000001010010100000 ...

  7. web前端面试经常遇得到的题型

    1.position的值, relative和absolute分别是相对于谁进行定位的? § absolute :生成绝对定位的元素, 相对于最近一级的 定位不是 static 的父元素来进行定位. ...

  8. SpringBoot 源码解析 (八)----- Spring Boot 精髓:事务源码解析

    本篇来讲一下SpringBoot是怎么自动开启事务的,我们先来回顾一下以前SSM中是如何使用事务的 SSM使用事务 导入JDBC依赖包 众所周知,凡是需要跟数据库打交道的,基本上都要添加jdbc的依赖 ...

  9. error: Unexpected console statement (no-console)

    使用console.log 报错??这个错误是Vuejs - 使用ESLint检查代码而产生的 解决办法: 1.不处理,虽然有恼人的提示,但是实际上能使用console.log的 2.关掉ESLint ...

  10. 网站统计IP PV UV

    ###我只是一个搬运工 网站流量统计可以帮助我们分析网站的访问和广告来访等数据,里面包含很多数据的,比如访问使用的系统,浏览器,ip归属地,访问时间,搜索引擎来源,广告效果等. PV(访问量):Pag ...