功能自动化测试工具selenium


一:什么是selenium?

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

selenium包含了:

selenium IDE(测试的录制;)

selenium Gird(测试的并行处理)

selenium webdriver(基于内核API完成对象的识别)

selenium的特点:

1、由程序控制浏览器进行操作,而不是手动操作浏览器

2、程序控制浏览器进行操作的时候,速度非常慢,所以要谨慎使用selenium

3、使用selenium控制浏览器的时候,需要下载浏览器驱动

4、selenium为开源 免费  但是更新速度没有浏览器快  

二:selenium的安装

下载第三方库

打开dos窗口进行第三方库的下载pip install selenium

配置不同浏览器的驱动程序

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

接着将浏览器的驱动放在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 的原理可以理解为 出租车 乘客 与司机之间的关系,一般来说,乘客上车之后要告诉司机他的目的地,司机知道后,再由车为载体将乘客拉到目的地。

在这里,我们将自动化测试脚本------>乘客

浏览器的驱动----->司机

浏览器------>出租车

二:GUI自动化的原理:

1.基于位置的模拟鼠标键盘的操作

2.基于图像识别的元素定位

3.基于元素本身的定位和操作

三:webdriver常见的定位方式

id   find_element_by_id()

name   find_element_by_name() 

class_name   find_element_by_class_name()

xpath   find_element_by_xpath()

tag_name   find_element_by_tag_name()

link_text   find_element_by_link_text()

css_selector   find_element_by_css_selector()

parital_link_text    find_element_by_partial_link_text()

(定位方式的优先级:ID,具有唯一性的name ,class_name,link_text

xpath;图像识别或者坐标)

四:webdirver的基本使用方法

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

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

#1.先进行导包fromseleniumimportwebdriver#强制等待importtime#2.定义一个driver的变量driver=webdriver.Chrome()#3.打开浏览器,拿百度示例driver.get('https://www.baidu.com/')time.sleep(2)#4.进行测试print('test success')#5.找到搜索框所对应的idvalue=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

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

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

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

(driver.switch_to_default_content())

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

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

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

http协议:超文本传输协议

☆ Webdriver的协议是什么?

The WebDriver Wire Protocol

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

time.sleep( )

driver.implicitly_wait(30)

多用 try 捕捉,处理异常

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

isElementPresent

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

不稳定

可靠性

不易维护

成本与收益

转载自https://blog.csdn.net/weixin_46164132/article/details/105037932

你可能感兴趣的:(功能自动化测试工具selenium)