自动化测试基础

一、回顾
1、close和quit的区别
close是关闭当前标签页
quit是关闭浏览器打开的所有页
2、代码未添加注释
3、元素的定位应用
element not interacble定位的元素无法进行交互
id = kw的元素,无法支持send_keys操作??
二、selenium的基础,如何基于webdriver实现的自动化交互原理,底层代码运用
所有的ui层的自动化都是基于元素定位来实现的。
所有的被操作元素,都是webelement对象
一个页面虽然有很多标签,实际系统中,元素的标签类型不是由表象来决定的,是通过css样式表来决定的。
自动化时,就是基于标签的属性来定位标签
如何定位精准你需要操作的元素:
八种元素定位定位法则
1、ID 基于元素属性中id的值来进行定位 运用多
2、name 类似于人们身份证上的姓名 运用比较多
3、link text :主要基于超链接进行定位
4、partial link text :link text的模糊查询版本,类似于数据库操作的模糊查询like %
当模糊查询匹配到多个符合条件的元素,选取第一个
5、classname 基于元素样式来进行定位,非常容易遇到重复的,不推荐使用
6、tagname 标签名来进行定位,只有在重复度最高时才使用,需要定位后进行二次筛选的操作
7、CssSelector 应用相对较多的一种行为,最初最IE不支持
8、xpath 目前应用最多的一种行为,谷歌和火狐都支持的一种

   绝对路径:/html/body/div[3]/div/div[2]/a/img  可以直接复制
   相对路径: 基于匹配制度来查找元素 例如://*[@id='kw']
                                           //表示根路径下开始查找
                                           * 任意元素
                                           [ ]表示筛选条件(查找元素)
                                           @表示基于属性来筛选,这里是id值为kw 的条件来筛选
1)相对路径+索引方式 //form/span[1]/input
 2)相对路径+属性定位 //input[@autocomplete='off'] 
 3)相对路径+通配符 //*[@autocomplete='off']
                               //*[@*='off'] 复制xpath经常会出错,不是万能的 
 4)相对路径+部分属性值定位
  以开头://*[start-with(@autocomplete,'of')]
  以结尾://*substring[@autocomplete,2)='ff'] 
 包含://*[contents(@complete,'of')] 
 5)相对路径+文本定位 //sapn[text()='按图片搜索']

问题:确认xpath路径是否正确?

   1、开发者工具elements页面使用Ctrl+f,进行判断
    2、在control中输入$x()进行校验
         如果要基于文本来定位元素,例如:
   //a[text()=“登录”]            //a[contains(text(),'登录')]
  通过ChroPath工具自动是生成相对路径表达式。
  通过子级返回到父级 在后面加 "/.."
  linux是"../"
  contains()函数
  通过父级定位到子级,例如/div/input

练习:手写Xpath
1.上次商城
2.基于网易云音乐实现一次登录操作自动化
http://music.163.com
当遇到了动态元素,就用父级定位到子级,或者子级定位到父级
三、selenium+三大等待
等待的作用:为了提高自动化运行的成功率
自动化是由机器来进行操作,将手工测试所执行内容转换为机器执行,在指定的地方,进行等待,以便于系统响应,在继续执行
1、强制等待
所有自动化学习者,最先接触的等待都是强制等待(sleep)
作用:当代码运行到强制等待这一行的时候,无论出于神门情况,都强制等待指定时间
需要导入强制等待from time import sleep
优势:简单入门
缺点:只能够对单次生效,无法做有效的判断
2、隐式等待
藏起来的等待,一次设置,针对当下的的webdriver对象
例如:driver.implicitly_wait()方法
作用:对webdriver对象设置全局等待,每一次操作,如遇到了页面加载,默认进入隐式等待
优点:设置一次即可,二期不会报错。
缺点:必须等待页面加载完成才能进入到后续的操作,或者等待超时再进入后续等待。
3、显式等待
光明正大的灯,专门用于等待指定的元素对象
通过导入
from selenium.webdriver.support.wait import webdriverwait
优点:用于指定的某一个元素进行等待
缺点:必须声明一次只能对一个生效。复杂程度相对其他两个较高
当多个等待一同被调用时,系统的等待时间取决于最长的等待时间。
四、自动化过程中避免的坑:
1、元素找不到(考虑是否有iframe和句柄的切换,元素定位技术不熟练,等待添加是否合理)
2、代码莫名其妙报错
3、不清楚什么时候该用什么技术
五、如果定位不到元素?
1、元素没有加载完成
2、Frame中
3、元素不可以用,不可读、不可见
3、动态属性、动态的DIV层
前提:需要定位的元素或它的属性必须要唯一

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值