01:从作业说起
把python文件实现的关键字改为RF资源文件里面的用户关键字
python文件(笔记:06)
def deleteAlllesson(): driver = webdriver.Chrome() driver.implicitly_wait() driver.get('http://localhost/mgr/login/login.html') #登录 driver.find_element_by_id('username').send_keys('auto') driver.find_element_by_id('password').send_keys('sdfsdfsdf') driver.find_element_by_tag_name('button').click() #删除课程 driver.implicitly_wait(1) while True: del_btns = driver.find_elements_by_css_selector('[ng-click="delOne(one)"]') if del_btns==[]: break del_btns[0].click() driver.find_element_by_class_name('btn btn-primary').click() time.sleep() #为了等待弹出框消失,接下来点击下面的删除按钮 driver.implicitly_wait(10) driver.quit()
改为RF资源文件关键字(rc.robot)
deleteAlllesson loginwebsite #删除课程 set selenium implicit wait 1 FOR ${var} IN RNAGE 9999 ${del_btns} get webelements css=[ng-click="delOne(one)"] exit for loop if $del_btns=[] evaluate $del_btns[0].click() click element css=.btn btn-primary sleep 1 END set selenium implicit wait 1 close browser
02:通过前面代码执行,浏览器打开了多次,这次减少web窗口打开的次数
setupwebTest open browser http://localhost/mgr/login/login.html chrome set selenium implicit wait 1 teardownWebTest close browser
03:上面已经把多次打开浏览器页面封装关键字,但是出现一个问题,如果登录操作不在当前页面,会找不到该元素
解决方法如下:
重定向指定网页——使用go to
后跟参数:url
04:封装登录操作
用户名密码, 写死在代码中??
这些数据根据不同的测试环境,可能会变化,如果这些数据,都散落在各个测试脚本文件中,非常不利于统一的修改
一般这种类型的数据,是写在一个用于配置的文件里面
资源文件作为配置文件,定义全局变量
变量表中声明变量
- 首先我们要创建Variables 表
- List变量
@{database} 127.0.0.1 3306
- Dict
${user1} name=auto pw=sdfsdfsdf
细节知识点:
另一种登录方式写法:
05:解决多次登录问题
【setup】 中添加多个关键字,使用run keywords