功能自动化测试工具(selenium)Day3—面试必看

一:什么是selenium?

selenium是一个应用在web端的应用程序的测试,selenium测试是直接应用在浏览器上,可支持的浏览器(chrome,Firefox,IE…)

selenium包含了:
selenium IDE(测试的录制;)

selenium Gird(测试的并行处理)
selenium webdriver(基于内核API完成对象的识别)

二:selenium的安装

  1. 下载第三方库
#打开dos窗口进行第三方库的下载
pip install selenium
  1. 配置不同浏览器的驱动程序

首先将下载好的驱动程序对应相同的浏览器的版本

接着将浏览器的驱动放在python中script的目录下

最后重启一下

在此下载驱动:

chrome浏览器的驱动 : http://chromedriver.storage.googleapis.com/index.html.
firefox的驱动: https://github.com/mozilla/geckodriver/releases.
IE浏览器的驱动: http://selenium-release.storage.googleapis.com/index.html.

三:selenium的工作原理

功能自动化测试工具(selenium)Day3—面试必看_第1张图片
selenium 的原理可以理解为 出租车 乘客 与司机之间的关系,一般来说,乘客上车之后要告诉司机他的目的地,司机知道后,再由车为载体将乘客拉到目的地。
在这里,我们将自动化测试脚本------>乘客
浏览器的驱动----->司机
浏览器------>出租车

二:GUI自动化的原理:

1.基于位置的模拟鼠标键盘的操作
2.基于图像识别的元素定位
3.基于元素本身的定位和操作

三:webdriver常见的定位方式

id
name
class_name
xpath
tag_name
link_text
css_selector
parital_link_text

(定位方式的优先级:ID,具有唯一性的name ,class_name,link_text
xpath;图像识别或者坐标)

四:webdirver的基本使用方法

#1.先进行导包
from selenium import webdriver
#强制等待
import time
#2.定义一个driver的变量
driver=webdriver.Chrome()
#3.打开浏览器,拿百度示例
driver.get('https://www.baidu.com/')
time.sleep(2)
#4.进行测试
print('test success')

以上就是webdriver的简单使用,那么我们要是想在搜索框内输入文字让他进行搜索该怎么操作呢?

#1.先进行导包
from selenium import webdriver
#强制等待
import time
#2.定义一个driver的变量
driver=webdriver.Chrome()
#3.打开浏览器,拿百度示例
driver.get('https://www.baidu.com/')
time.sleep(2)
#4.进行测试
print('test success')
#5.找到搜索框所对应的id
value=driver.find_element_by_id('kw')
#点击操作
value.click()
#填值
value.send_keys('python')
time.sleep(2)
#6.点击搜索
driver.find_element_by_id('su').click()
#7.进行测试
print('ok')

五:面试常问的问题

☆ selenium中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定是可以点击的?

1.使用异常处理的方法:try…except

2.在对元素进行操作之前,进行点击,等待操作

3.给开发人员建议,给页面元素加上唯一的name/Id

☆ 在做自动化测试的时候,元素定位不上应该怎么处理?

  1. 安装驱动有问题,导致无法运行

  2. 不在同一个iframe里面。经常会遇到alert、frame和新的window,对于这种情况就需要切换frame窗口
    (driver.switch_to_default_content())

  3. 点击速度过快,页面还没加载出来,这个时候再去找元素肯定是定位失败,在这个过程中我们需要设置强制等待。Time.sleep(3)

  4. 可以根据元素的其他属性来进行定位,例如尝试xpath,CSS这些;实在不行也可尝试根据相对关系定位,依据其附近的父节点,子节点、兄弟节点定位

☆ 启动浏览器的时候用的的是webdriver的那个协议?

http协议:超文本传输协议

☆ Webdriver的协议是什么?

The WebDriver Wire Protocol

☆ 用例在运行过程中经常会出现不稳定的情况,也就是这次可以通过,下次无法通过了,如何提高用例的稳定性?

time.sleep( )
driver.implicitly_wait(30)
多用 try 捕捉,处理异常

☆ Selenium中用什么函数判断元素是否存在?

isElementPresent

☆ 你觉得自动化测试最大的缺陷是什么?

不稳定
可靠性
不易维护
成本与收益

你可能感兴趣的:(功能自动化测试工具(selenium)Day3—面试必看)