定位示例
RF关键字 | 定位 | 内容 |
Input Text | id=kw1 | robotframework |
Input Text | name=wd | robotframework |
Click Button | id=su1 | |
Input Text | css=[name=wd] | rf |
Input Text | xpath = //span[@class=’bg s_ipt_w’]/input |
Xpath定位
定位 | 讲解 | |
Xpath绝对路径 | xpath=/html/body/div[1]/div[4]/span[1]/input | |
Xpath相对路径 | xpath=//*[@id=‘kw1‘] | 某个层级下,属性为id=kw1的元素 |
xpath=//input[@type=‘text‘] | 标签名为input的且属性type=text的元素 | |
xpath = //form[@id=’form1’]/span/input | 根据容易定位的上级元素开始找 | |
xpath = //input[@id=’kw1’ and @name=’wd’] | 同时拥有两个属性的标签 | |
xpath = //input[@id=’kw1’ or @name=’wd’] | 拥有属性A的标签或者拥有属性B的标签 |
CSS定位
选择器 | 例子 | 讲解 |
.class | .intro | 选择class=”intro“的所有元素 |
#id | #firstname | 选择id="firstname"的所有元素 |
* | * | 选择所有元素 |
element | p | 选择所有<p>元素 |
element,element | div,p | 选择所有<div>元素和所有<p>元素 |
element element | div p | 选择 <div> 元素内部的所有 <p> 元素 |
element>element | div>p | 选择父元素为 <div> 元素的所有 <p> 元素 |
element+element | div+p | 选择紧接在 <div> 元素之后的所有 <p> 元素,相邻关系 |
[attribute] | [target] | 选择带有 target 属性所有元素 |
[attribute=value] | [target=_blank] | 选择 target="_blank" 的所有元素 |
[attribute~=value] | [title~=flower] | 选择 title 属性包含单词 "flower" 的所有元素 |
[attribute|=value] | [lang|=en] | 选择 lang 属性值以 "en" 开头的所有元素 |
selenium2library的API
关键字 | 输入的值 | 操作平台 | 其他 | 备注 | |
Open Browser | 完整的url | chrome |
chrome:googlechrome/gc/chrome IE:internetexplorer/ie firefox:ff/firefox Opera:opera Android:android Iphone:iphone Safari:safari 要想通过不同的浏览打开URL地址,一定要安装浏览器相对应的驱动。如chrome 的驱动: chromedriver.exe 等。浏览器默认为空时启动FireFox |
||
Close Browser | 关闭浏览器 | ||||
Close All Browsers | 关闭所有浏览器 | ||||
Maximize Browser Window | 使当前打开的浏览器全屏 | ||||
Get Window Size | 800 | 600 | 以像素为单位,第一个参数800表示宽度,第二个参数600表示高度 | ||
Input Text | Xpath=//* [@] | 输入信息 | 文本输入 | ||
Click Element | Xpath=//* [@] | 点击元素 | |||
Click Button | Xpath=//* [@] | 点击按钮 | |||
choose file | xpath=//* [@] | C:\\Do\\bug5.png | 上传图片文件 | ||
Comment | 注释说明 | 注释一 | |||
# 注释说明 | 注释二 | ||||
Sleep | 42 |
固定休眠多长时间,以“秒”为单位 2 minutes 10 seconds 表示2分10秒 |
|||
Wait Until Page Contains Element | Xpath=//* [@] | 42 | error |
Xpath=//* [@] :表示元素定位,这里定位出现的元素,42表最大等待时间 error表示自定义错误提示,如:元素不能正常显示 |
|
Get Title | 获得当前浏览器窗口的title 信息 | ||||
Get Text | Xpath=//* [@] | 获取文本信息,定位文本信息的元素 | |||
Get Element Attribute | id=kw@name | 获取元素元素属性值,id=kw 表示定位的元素。@nam 获取这个元素的name属性值 | |||
get cookies | 获得当前浏览器的所有cookie | ||||
get cookie value | Key_name | 获取cookie的值,key_name 表示一对cookie中key的name | |||
delete cookie | Key_name | 删除cookie,删除key为name 的cookie信息 | |||
delete all cookies | 删除当前浏览器的所有cookie | ||||
add cookie | Key_name | Value_name | 添加一对cooke (key:value) | ||
${a} | Set Variable | hello | 定义变量a为hello | ||
${a} | ${b} | Set Variable | hello | world | 定义变量a为hello ,b为world |
log | ${a} | 在测试报告中输出a变量的值 | |||
${width} | ${height} | get window size | 获得浏览浏览器窗口宽、高,通过log 将宽高,打印到报告中 | ||
log | ${width} | ||||
log | ${height} |
selenium2library的API高级
备注 | |||||
验证 | |||||
open browser | http://www.baidu.com | chrome | Open Browser 通过chrome打开百度首页 | ||
${title} | Get Title | Get Title 获得浏览器窗口的titile ,并赋值给变量${title} | |||
Should Contain | ${title} | 百度一下,你就知道 | Should Contain 比较${title}是否等于“百度一下,你就知道” | ||
嵌套 | |||||
Select Frame | Xpath=//* [@] | 进入表单,Xpath=//* [@] 表示定位要进入的表单 | |||
Unselect Frame | 退出表单 | ||||
下拉框 | |||||
Unselect From List By Value | Xpath=//* [@] | vlaue | 定位下拉框,Vlaue 选择下拉框里的属性值 | ||
IF分支语句 | |||||
${a} | Set variable | 2 | 定义两个变量a ,b 分别为 2 和5 | ||
${b} | Set variable | 5 | |||
run keyword if | ${a}>=1 | log | a大于1 | If 判断 a 大于等于1 ,满足条件log 输出 “a大于1 ” | |
... | ELSE IF | ${b}<=5 | log | b小于等于5 | 不满足上面的条件,接着else if 判断b小于等于5 ,满足条件log 输出 “b小于等于5” |
... | ELSE | log | 上面两个条件都不满足 | 上面两个条件都不满足,else log输出“上面两个条件都不满足” | |
for循环语句 | |||||
:FOR | ${i} | in range | 10 | 循环变量i 从0 到9 循环10次 | |
log | ${i} | 输出到log | |||
for循环语句 | |||||
@{a} | create list | aaa | bbb |
@{a} 定义为一个字符串列表。通过in 可遍历非整型(in range) |
|
:FOR | ${i} | in | @{a} | Log 、if 分支,for 循环并非selenium关键字库的提供的方法,是由BuiltIn包提供 | |
log | ${i} |
关键字驱动
如“open browser” 就是一个关键字。从底层去看它就是一个通过编程去现实的一个方法。
def open_browser(url,browser):
#通过browser找到相应的浏览器驱动,调用浏览器,借助python的httplib、urllib模块将url传递给浏览器。从而实现open brwoser 的目的。
上面的伪代码表述的“关键字”的底层其实还是程序定义的方法。
把操作步骤封装一个一个的方法(关键字),通过调用关键字来实现测试用例。
定位单个元素 | 定位多个元素 |
find_element_by_id | find_elements_by_name |
find_element_by_name | find_elements_by_xpath |
find_element_by_xpath | |
find_element_by_link_text | |
find_element_by_partial_link_text | |
find_element_by_tag_name | |
find_element_by_class_name | |
find_element_by_css_selector |
size 获取元素的尺寸
text 获取元素的文本
get_attribute(name) 获取属性值
location 获取元素坐标,先找到要获取的元素,再调用该方法
page_source 返回页面源码
driver.title 返回页面标题
current_url 获取当前页面的URL
is_displayed() 设置该元素是否可见
is_enabled() 判断元素是否被使用
is_selected() 判断元素是否被选中
tag_name 返回元素的tagName
set window size :设置浏览器宽、?
get window size :获取浏览器宽、?
go back :浏览器进?回退操作
reload page:页面重新加载,即页面刷新操作
get title:获取当前浏览器窗?的标题
get location:获取当前URL?