1、准备web自动化测试环境
-
安装:pip install robotframework-seleniumlibrary
-
安装谷歌浏览器: https://www.google.cn/chrome/
-
安装谷歌浏览器驱动
驱动一定要配套浏览器版本
-
将 SeleniumLibrary库导入测试套件
2、常规的关键字
3、元素定位
前提:元素或者属性必须唯一
八种元素定位方式:
(以百度为例)
id
Input Text id=kw id定位
name
#name定位
Comment Input Text name=wd name定位
link_text
#link_text链接文本
Comment Click Element link=新闻
partial_link_text
#partial_link_text部分链接文本
Click Element partial link=新
xpath(熟练)
-
绝对路径定位:以 / 开头,从网页的开始标签往下查找,即html标签
使用绝对定位查找,复制的路径有可能再打开的窗口找不到元素,所以需要从打开的窗口中定位元素
#绝对定位
Input Text xpath=/html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input 绝对定位
-
相对路径定位:以 // 开头,相对路径是从网页的任意标签开始查询元素,一般都不是唯一的,所以需要结合其它方式定位
-
相对路径+索引定位
#相对路径+索引定位 Input Text xpath=//form/span[1]/input 相对路径+索引定位
-
相对路径+属性定位
#相对路径+属性定位 Input Text xpath=//input[@autocomplete='off'] 相对路径+属性定位
-
相对路径+部分属性定位 (如果属性动态变化的,可以使用部分属性定位)
#相对路径+部分属性定位(以xx开头) Input Text xpath=//input[starts-with(@autocomplete,'of')] 相对路径+部分属性定位
#相对路径+部分属性定位(以xx结尾) Input Text xpath=//input[substring(@autocomplete,2)='ff'] 相对路径+部分属性定位
#相对路径+部分属性定位(包含) Input Text xpath=//input[contains(@autocomplete,'ff')] 相对路径+部分属性定位
- 相对路径+通配符定位
#相对路径+通配符定位 Input Text xpath=//*[@id="kw"] 相对路径+通配符定位
不建议复制使用:
1、复制的xpath全部是带通配符,性能很低
2、复制的xpath通常比手写的复杂
3、如果是动态属性,复制的xpath就完全失效了
- 相对路径+文本定位
#相对路径+文本定位 Input Text xpath=//span[text()='按图片搜索'] 相对路径+文本定位
-
css(掌握)
- 绝对路径:基本完全不用
- 通过ID(#)和class定位(.) 如果class属性中有空格需要使用.替换
#通过ID定位
Input Text css=input#kw 通过ID定位
Input Text css=#kw 通过ID定位
#通过class定位
Input Text css=.s_ipt 通过class定位
Input Text css=input.s_ipt 通过class定位
-
相对路径:
- 通过属性定位:
css=input[autocomplete='off']
- 通过部分属性值定位:
#以什么开头 css=input[autocomplete^='of']
#以什么结尾 css=input[autocomplete$='ff']
#包含 css=input[autocomplete*='ff']
- 通过子节点定位(不建议使用,因为需要结合标签+id或者class使用,而且有时候会执行失败):
#通过子节点定位 css=form#form span.bg.s_ipt_wr.quickdelete-wrap input.s_ipt
#通过子节点定位 #定位到div标签,其中包含属性s-top-left,下的a标签子节点第七个 css=div#s-top-left a:nth-child(7)
- 通过兄弟节点定位:
#通过兄弟节点定位 #定位到div标签,其中包含属性s-top-left,下的a标签子节点第七个的下一个兄弟节点,也就是第八个 css=div#s-top-left a:nth-child(7) +a
class_name
几乎不使用
tag_name
几乎不使用
#通过兄弟节点定位
#定位到div标签,其中包含属性s-top-left,下的a标签子节点第七个的下一个兄弟节点,也就是第八个
css=div#s-top-left a:nth-child(7) +a
class_name
几乎不使用
tag_name
几乎不使用