python随笔01(robotframework自动化)

一、dos窗口输入pip提示did not provide a command
解决网址:https://blog.csdn.net/songlh1234/article/details/82882386
(1)可能造成的原因:
①未配置环境变量,或者配置的环境变量路径未识别,建议将指定的路径放置在path输入框的最前面,便于优先识别
②若环境变量没问题,却还是报上述错误,在dos窗口输入where pip命令查询pip的安装目录
我们的安装目录一般为……\Scripts\pip.exe,
如果多出了其他几个pip路径的话可能会导致系统无法识别我们具体使用的是哪一个,
此时在dos窗口只要输入指定pip3或pip2(这个2、3根据安装的python版本情况而定)即可,
之后若要在命令行中安装指定的软件执行pip3 (pip2) install 即可
(2)在DOS窗口中如何退出当前的python路径:
①quit()
②exit()
(3)查看pip的路径:where pip
二、python3 + RobotFramework环境搭建
https://www.cnblogs.com/pan-louis/p/10375194.html
三、运行ride.py命令打不开RF,而是打开pycharm编辑器;解决办法:
ride.py在scripts里,找到它,将其打开方式改为python.py的格式即可
四、robotframework框架问题小结及总结
https://www.cnblogs.com/star12111/category/1089267.html
五、.如何在桌面创建RIDE的快捷方式:
①桌面鼠标右键→新建→快捷方式→

②输入E:\python3.7\python.exe-c “from robotide import main;main()”,→进行下一步命名为:RIDE
③更换图标:点击快捷方式→右键属性→更换图标路径选择E:\python3.7\Lib\site-packages\robotide\widgets\robot.ico
六、python.exe和pythonw.exe的区别(区分.py,.pyw,.pyc文件)
https://blog.csdn.net/pythonw/article/details/74430328
①python.exe在运行时,会弹出一个黑色的控制台窗口(也叫命令窗口、DOS/CMD窗口);
②pythonw.exe是无窗口的python可执行程序,即在运行程序的时候,没有窗口,代码在后台执行
③.pyc文件,是Python解释器运行程序的过程中产生的字节码文件(也就是中间文件)
七、Python在什么情况下产生pyc文件?
在import别的py文件时,那个py文件会被存一份pyc加速下次装载。
八、在dos窗口中输入pip3 list 必须要具备的信息有:
C:\Users\Administrator>pip3 list
Package Version


certifi 2019.3.9
chardet 3.0.4
et-xmlfile 1.0.1
idna 2.8
jdcal 1.4
lxml 4.3.3
module 0.2.1
openpyxl 2.6.2
Pillow 6.0.0
pip 18.1
psycopg2 2.7.7
Pygments 2.3.1
PyMySQL 0.9.3
PyPubSub 3.3.0
pywin32 224
requests 2.21.0
robotframework-ride 1.7.3.1
robotframework-selenium2library 3.0.0
robotframework-seleniumlibrary 3.3.1
robotframeworklexer 1.1
selenium 3.141.0
setuptools 40.6.2
six 1.12.0
urllib3 1.24.1
wxPython 4.0.4
XlsxWriter 1.1.5
xlwt 1.3.0

九、如何通过命令行打开ride.py?
①一般情况下,可直接输入ride.py即可打开ride的显示页面
若直接输入无法打开,采取下列方法:
①在dos窗口进入到python的scripts目录
②运行 python ride.py即可
十、在使用RIDE执行脚本时报错下列信息:
command: jybot.bat --argumentfile C:\Users\Administrator\AppData\Local\Temp\RIDEtd7qsbxr.d\argfile.txt --listener E:\python3.7\lib\site-packages\robotide\contrib\testrunner\

TestRunnerAgent.py:3237:False E:\RIDEtesting\测试项目
[WinError 2] 系统找不到指定的文件。
解法办法:
①将new suit的Execution Profile的执行方式改为robot即可,如果使用jybot,需要在系统中安装该软件,否则无法执行
②在使用RIDE的时候要特别注意ride与wxPython的匹配度,这也是导致脚本执行报错的重要原因,有关版本的匹配度可具体查看python随笔16

robotframework安装步骤:
①安装python
②安装robotframework
③安装wxPyhon
④安装robotframework-ride
⑤安装robotframework-Selenium2Library
十一、RobotFramework用法总结
http://www.51testing.com/html/53/n-3721853.html
①创建项目New project选址directory原因是,在directory的项目下可以创建测试套件,如果type为file,则只能创建测试用例,这不利于用例的管理,且这里的格式最好使用robot
②创建测试套件New Suite,选址file的原因是,在file的测试套件下可以创建测试用例,如果type为directory,还得重新再继续建file的测试套件,才能创建测试用例,因为测试用例只能在file类型下创建
③右击测试套件创建测试用用例
④在最新支持的python3的日德中建议使用robot的格式
⑤注意:在import Library中,导入路径时,使用的斜杠需要向左,如果向右的话,跑脚本时将无法识别
十二、Robot Framework自动化测试 pybot 参数详解
https://blog.csdn.net/miss520jenny/article/details/81811264
十三、RobotFramework使用笔记
Builtin库
备注:在RobotFramewo中若使用Text Edit 编辑脚本时,敲击空格一次,表示在同一列中内容的间隔,若要使内容分列显示,则在要输入的内容中敲击空格二次即可新增一列
1.log就是“print”
robotframework中,log关键字就是编程语言里的“print”一样,可以打印任何你想打印的内容
如:log hello world
2.在robotframework中,通过“Set variable”关键字来定义变量
如: ${a} Set variable hello world
log ${a}
3.“catenate”关键字可以连接多个信息
如: ${hi} Catenate hello world
log h i 4. “ S E P A R A T O R = ” 可 以 对 多 个 连 接 的 信 息 进 行 分 割 如 : {hi} 4.“SEPARATOR=”可以对多个连接的信息进行分割 如: hi4.SEPARATOR={hi} SEPARATOR=- hello world
log h i 注 意 : 这 里 的 S E P A R A T O R 必 须 为 大 写 , 小 写 分 割 的 功 能 将 失 效 5. 定 义 列 表 ① 通 过 “ C r e a t e L i s t ” 关 键 字 可 以 定 义 列 表 如 : {hi} 注意:这里的SEPARATOR必须为大写,小写分割的功能将失效 5.定义列表 ①通过“Create List”关键字可以定义列表 如: hiSEPARATOR5.CreateList{abc} Create List a b c
log ${abc}
执行的结果有两种:
用pyton3的运行环境:

用python2.7的运行环境:

即在使用python2.7的时候,执行的结果会自动关联上编码格式

②如果通过“@{}”去定义列表的话,可以通过“log many”关键字进行打印
如:{abc} Create List a b c
log many @{abc}

6.时间的操作
①Robotframework中提供了“get time”关键字来获取当前时间
如:${hi} Set variable hello world
${t} get time
log h i , {hi}, hi,{t}
②“sleep”关键字用来设置休眠一定时间
如:${hi} Set variable hello world
sleep 5
${t} get time
sleep 5
log h i , {hi}, hi,{t}
备注:“sleep”关键字默认以“秒”为单位

7.if语句
通过“run keyword if” 关键字可以编写if分支语句
如: ${a} Set variable 59
run keyword if ${a}>=90 log 优秀
… ELSE IF ${a}>=70 log 良好
… ELSE IF ${a}>=60 log 及格
… ELSE log 不及格
设计思路:首先定义一个变量a等于59.
if 判断a 大于等于90,满足条件log输出“优秀”
不满足上面的条件,接着else if 判断a大于等于70,满足条件log输出“良好”;
不满足上面的条件,接着else if 判断a大于等于60,满足条件log输出“及格”;
上面的条件都不满足,else log输出“不及格”。

备注:注意ELSE IF和ELSE前面的三个点点点(…)
这里的ELSE IF可以采用小写,但是在Text Edit中编辑,若是小写的话,格式不太美观
如:

8.for循环
①在RobotFramework中编写循环通过“:for”
如::FOR ${i} IN RANGE 10
log ${i}
通过“:for”定义for循环;in range用于指定循环的范围.
注意:in range定义未10,它的范围是0-9
②遍历列表
如:
使用Test Edit编辑:
@{abc} create list a b c
: FOR ${i} IN @{abc}
\ log ${i}
注意:若在log前不加"",运行robotframework会报错:“FAIL : FOR loop contains no keywords.(for循环不包含关键字)”
Edit列表编辑:

“create list” 关键字用来定义列表(a,b,c),"@{}"用来存放列表
通过“:for”循环来遍历2{abc}列表中的字符
③循环中的判断
如;
@{abc} create list a b c
: FOR i I N @ a b c   E x i t F o r L o o p I f ′ {i} IN @{abc} \ Exit For Loop If ' iIN@abc ExitForLoopIf{i}’==‘c’
log ${i}
通过“Exit For Loop If”关键字时对for循环内的判断,当满足Exit For Loop If 条件后,循环结束
注意:要特别注意当使用列表编辑时有空格的,在使用Text Edit编辑时,一定要使用“\”填补空缺,否则在运行时会导致脚本运行失败,并提示“FAIL : FOR loop contains no keywords.(for循环不包含关键字)”
Edit列表编辑:

9.强大的Evaluate
问题:通过evaluate调用本地的python文件,如何得到想要的结果,在robotframework中如何书写其格式?
①Evaluate可以使用Python语言中所提供的方法
②在RobotFramework中使用“Evaluate”也可以调用Python所提供的random模块下的randint()方法
如:
${d} Evaluate random.randint(1000,9999) random
log ${d}
备注:random模块的randint()方法用于获取当前时间
③执行本地程序
Evaluate os.system(‘E:/pycharm01/test.py’) os
通过调用Python所提供的os模块中的system()方法可以执行本地Python文件。
system()方法,不仅可以执行Python文件,任何在cmd命令提示符下可允许文件和命令,它都可以执行
一般情况下,我们尽量把要做的事情通过Python封装成关键字给RobotFramework,若直接使用system()方法执行外部程序,实际上这样做其实脱离了RobotFramework,这就失去了做自动化的意义
10.导入库
①调用框架
如: Import Library unittest
我们导入了Python标准的单元测试框架unittest(在RobotFramework中并不能使用unittest,这里只做演示作用)
假如我们通过“Import Library”导入一个不存在的模块,执行测试用例会报错;即RobotFramework会遍历Python安装目录下的相关目录来查找指定要导入的模块,若不存在则会执行报错
②调用Python文件
如执行:
Import Library E:/pycharm01/test.py
${add} add 4 5
log ${add}
执行结果为:
Starting test: 测试项目1.测试套件1.helloworld
20150303 21:54:21.335 : INFO : ${add} = 45
20150303 21:54:21.335 : INFO : 45
Ending test: 测试项目.测试套件…helloworld
从执行的结果中看到和预想的结果不一样,我们期望的结果为9,得到的结果是45.为什么?这是因为RobotFramework将4,5当成两个字符串,所以4和5拼接起来时45,。此时我们可以将4和5转化成int类型,再调用add即可。如下:
Import Library E:/pycharm01/test.py
${a} Evaluate int(4)
${b} Evaluate int(5)
${add} add ${a} ${b}
log ${add}
备注:通过“Evaluate”转化为int类型后,再调用add就得到了想要的结果
11.注释
“Comment”关键字用于设置脚本中的注释,或者使用“#”号进行注释也可以
如:
Import Library E:/pycharm01/test.py
${a} Evaluate int(4) #这是注释
${b} Evaluate int(5)
${add} add ${a} ${b}
log ${add}
comment 这是注释
备注:这里要特别注意的是,“#”注释可以直接在目标行中直接添加,comment必须要另起一行,否则执行测试用例时会报错
需要注意的是上述内容(1-11)的关键字全部由Builtin库提供,Builtin为RobotFramework标准类库。Builtin库提供常用的关键字。

Screenshot库
Screenshot同样为RobotFramework标准类库,该库其中一个关键字“Take Screenshot”为常用关键字,它用于截取到当前窗口
虽然Screenshot也为RobotFramework标准类库,但它默认不会加载,需要手动在测试套件(项目)中加载这个库
如:
在Test Edit中输入Take Screenshot:

运行用例,查看log.html即可查看截图

Collection库
Collection库同样为RobotFramework标准类库,它所提供的关键字主要用于列表、索引、字典的处理
在使用之前需要在测试套件(项目)中添加这个库:
1.创建字典
字典也是一种常见的存放数据的形式,Create Dictionary 关键字用于创建关键字。
如:
Create Dictionary key value key value
Create Dictionary a 1 b 2
备注:字典的存放方式是key:value成对儿存放的
2.操作字典
如:
${dict} Create Dictionary a 1 b 2
${items} Get Dictionary Items ${dict}
log ${items}
${key} Get Dictionary Keys ${dict}
log ${key}
${value} Get Dictionary Values ${dict}
log ${value}
${v} Get From Dictionary ${dict}
log ${v}
备注:
Get Dictionary Items 关键字获取字典中的Key 和Value
Get Dictionary Keys 关键字获取字典中的key
Get Dictionary Values 关键字获取字典中的value
Get From Dictionary 关键字获取字典中的Key对应的values
问题:在执行Get DIctionary Values执行测试用例报错:
“Keyword ‘Collections.Get From Dictionary’ expected 2 arguments, got 1.“
RIDE
1.Edit标签
导入资源时,如何在txt标签中自定义关键字?
①加载外部文件
Library:导入库
在添加指定库之前,必须保证该库已经在Python下进行了安装
若导入的库不存在或库名错误,则会报红显示,黑库表示导入的库状态正常
备注:若我们在“测试套件”中添加库,那么这个库中所提供的关键字可以被当前测试套件下的用例使用;若是在“测试项目”中添加的库,当前项目下的测试用例不能使用库中的关键字,需要在用例相应的“测试套件”中再次添加库
Resource:导入资源
该部分导入的资源一般为项目相关的文件,如项目的自定义关键字文件,添加该资源的作用与添加方式与导入库一样;若添加成功,则在RIDE左侧项目列表,会发现“External Resource”下多了我们指定导入的资源
Variables
②定义内部变量
Add Scalar :点击该控件,可创建变量
这里创建的变量可以被整个测试套件中的用例所使用,也可以认为是一个公共变量
如:

Name用于定义变量名:${hi}
Value用于给变量赋值
实际使用:
在测试用例中编辑

用例中是两个打印信息,分别使用了¥{hi}变量
执行结果:

Add List:定义列表变量

Name定义变量名为:${student}
Value填写列表变量的值:小明、小红、小华、小明
在测试用例中可以对该一维数组进行遍历:
: FOR ${n} IN @{student}
\ log n , {n}, n,{hi}
执行结果:

Add Dict
③定义元素据
Add Metadata

Text Edit 标签
可视化编辑文本,其功能等同于指定目录下的“测试套件.txt”
如:

Run标签
①Execution Profile :
默认使用robot 标签运行案例;一般使用robot(pybot)运行Python编译器
②jybot 需要安装Jython
③custom script 选择自定义脚本运行
④Report 和Log:报告和日志,他们的区别:报告更多的是结构上的展示,日志更多的是过程中的记录
⑤Autosave:自动保存,如果不勾选,在修改了用例之后如果没有保存的话,运行案例时会提示是否保存。勾选则在运行时自动保存
⑥Arguments:
robot的参数(或者pybot、jybot等),可以在这里输入robot的相关命令完成相应的操作

⑦筛选用例
支持在测试套件上筛选用例
支持通过命令执行:
如输入“-t + 需要执行的测试用例名称 ”
筛选标记:
点击某个用例,点击setting>>,
当看到Tags选项,在的输入框中输入“重要”,这条用例就被打上了“重要”的标记
那么如何运行这条被标记为“重要”的测试用例?

Settings
测试用例的Settings
①Documentation:用于描述用例的一个小文本,它可以把URL地址转换为可点击的链接
②Setup和Teardown(多见于unittest单元测试框架):
Selenium2Library库
tearDown方法在每个测试方法执行后调用,这个方法用于完成测试用例执行后的清理工作,如执行“close browser”关闭浏览器等。
③Tags:用于给用例添加标记
④Timeout:用于设置用例的超时时间
⑤Template:指定模板使用的关键字
测试套件的Settings
①“Suite Setup”和“Suit Teardown”用于当前套件开始和结束的事情
“Test Setup”和“TestTeardown”会作用于套件下每一个测试用例开始和结束所要做的事情
②Force Tags:表示当前测试套件下测试用例强制的标记
③Default Tags:表示当前测试套件下测试用例默认的标记

用户关键字
创建用户关键字
在测试套件上右键选择“New UserKeyword”(详情见robotframework自动化测试.pdf)
备注:当用户关键字与测试用例平级,就可在测试用例中直接使用;如图:

编写用户关键字操作的步骤及结果:
操作步骤:
①点击“Setting>>”按钮,Arguements参数为: n u m b e r , 这 就 像 定 函 数 的 输 入 参 , 可 以 设 置 多 个 变 量 , 之 间 用 “ ∣ ” 分 隔 ② 添 加 循 环 的 用 例 , 循 环 的 次 数 为 : {number},这就像定函数的输入参,可以设置多个变量,之间用“|”分隔 ②添加循环的用例,循环的次数为: number:{number}
③接着在用例中使用“循环“用户关键字
如图所示:

操作结果:

创建资源
在创建资源的过程中,如何使导入的txt文件能正常使用?

1.火狐浏览器如何关闭自动更新?
打开火狐浏览器→设置→选项→常规→找到Firefox更新,取消勾选自动安装更新即可
备注:当前65.0.1(32位)版本支持驱动:

2.Open Browser
https://blog.csdn.net/shandong_chu/article/details/80593828
Open Browser https://www.baidu.com firefox
Maximize Browser Window
Input Text id=kw god
sleep 2
Click Button id=su
Sleep 2
Wait Until Page Contains 上帝
${tittle} Get Title
Should Contain ${tittle} god
Sleep 10
close browser

L1:即使用关键字Open Browser打开Firefox浏览器,在第三列设置某个浏览器类型(这里要特别注意指定浏览器的关键字可以按F5输入Open Brower,即可查看指定浏览器对应的关键字)
L2:最大化浏览器
L3:根据id定位输入框,然后输入文字(即第三列)
L4:设置等待时长
L5:根据id定位按钮,然后进行点击
L7:等待页面包含了文本(即第二列),然后再执行下一步脚本
L8:设置变量 t i t l e , 且 取 值 为 第 二 列 L 9 : 执 行 校 验 , 即 {title},且取值为第二列 L9:执行校验,即 title,L9:{title}包含了第三列,则校验通过
L11:关闭浏览器
3.元素定位
18种定位方法:https://www.cnblogs.com/yoyoketang/p/6557421.html(基于pthon代码)
基于rRIDE工具元素定位:https://www.cnblogs.com/fnng/p/9368293.html
id和name定位

从上述截图可知:
①百度搜索输入框可以采用“id=kw”或“name=wd”定位
②Input Text 用于输入框的关键字,“robotframework学习”是要给输入框输入的内容

③百度按按钮只id数据可以利用,即“id=su”
所以可编写如下用例:
Open Browser https://www.baidu.com ff
Maximize Browser Window
Input text id=kw robotframework学习
Sleep 5
Click button id=su
Sleep 5
Close Browser
问题:为什么百度打开网页时不是在第一个百度搜索框进行搜索内容,反而进到了详细页面进行搜索内容?
Xpath定位
Open Browser https://www.baidu.com ff
Input Text xpath=//input[@id=‘kw’] Selenium2自动化
Click Button css=#su
sleep 5
Close Browser

1.Xpath的绝对路径:
Xpath = /html/body/div[1]/div[4]/div[2]/div/form/span[1]/input
从路径描述来看,我们可以从最外层开始找,html下面的body下面的div下面的第4个div下面的…input标签。通过一级一级的锁定就找到了想要的元素。
备注:绝对路径的用法往往是在我们迫不得已的时候才用的,大多时候用相对路径更简便
2.Xpath的相对路径:
①Xpath同样可以利用元素自身的属性:
Xpath=//*[@id=‘kw’]
//表示某个层级下,表示某个标签名。@id=kw表示这个元素有个id=kw
备注:xpath=//
[@]:表示元素定位,定位文本输入框,且这里元素定位的值必须加上单引号或双引号,否则无法定位
②制定标签名:
Xpath=//input[@id=‘kw’]
③元素本身,可以利用的属性就不只局限为id和name,如:
Xpath = //input[@type=‘text’]
Xpath=//input[@autocomplete=‘off’]
备注:无论用什么元素进行定位,都要保证这些元素是唯一可以识别的一个元素
④找上级:
元素的上级属性为:

        找爸爸: Xpath=//span[@class='bg s_ipt_wr']/input 如果爸爸没有唯一的属性,可以找爷爷: Xpath=//form[@id='form1']/span/input 这样一级一级找上去,直到html,name就是一个绝对路径了 ⑤布尔值写法: 如果一个人的姓名不是唯一的,身份证号也不是唯一的,但是同时叫张三并且身份证号为123的人却可以唯一的确定一个人。那么可以这样写: Xpath=//input[@id='kw1' and @name=‘wd’] 备注:and也可替换成or,使用区别从字面意思就能判别 CSS定位 http://www.w3school.com.cn/cssref/css_selectors.asp 以百度输入框的代码为例,看看css如何定位:         ①id定位: css=#kw1 ②class定位: css=.s_ipt ③其他属性: css=[name=wd] css=[type=text] css=[autocomplete=off] ④父子定位 css=span>input css=form>span>input ⑤根据标签名定位: css=input 4.Selenium2Library关键字 Selenium2Library的关键字可以在RIDE中通过点击F5在输入框中输入Selenium2Library来查看 5.浏览器 1.浏览器驱动 ①通过不同的浏览器执行脚本

②浏览器对应的关键字

③Open Browser同样也可以打开本地的html页面,
如:
Open Browser E:/htmlTesting/Helloworld.html chrome

备注:
要想通过不同的浏览器打开URL地址,一定要安装浏览器相对应的驱动;
Chrome的驱动为:chromedriver.exe
IE的驱动为:IEDriverServer.exe
浏览器默认为空时启动FireFox
2.关闭浏览器
关闭当前浏览器:
Close Browser
关闭所有打开的浏览器和缓存重置:
Close All Browser
3.浏览器最大化
Maximize Browser Windows 使当前打开的浏览器全屏
4.设置浏览器窗口宽、高
①Get Window Size 800 600:该关键字用于打开浏览器的宽度和高度。以像素为单位,第一个参数800表示宽度,第二个参数600表示高度
②get window size 关键字,用于获取当前浏览器的宽度和高度,且log日志打印浏览器宽、高d的具体像素
Open Browser http://localhost:8080/labms/ ff
Sleep 5
Maximize Browser Window
${width} ${height} get window size
log ${width}
log ${height}
Click Element xpath=//a[@href="#login"]
Sleep 5
Input Text id=form-username 2019030801
Sleep 5
Input Text id=form-password 111111
Sleep 5
Input Text id=validCode 8779
Sleep 5
Click Button id=loginBtn

5.文本输入
Input Text xpath=//input[@name=“userName”] 2019030801
备注:input text 关键字用用户向文本框时输入 内容
xpath=//[@]:表示元素定位,定位文本输入框,且这里元素定位的值必须使用单引号或双引号,否则无法定位
6.点击元素
Click Element xpath=//a[@href="#login"]
备注:Click Element关键字用于点击页面上的元素,单击任何可以点击的按钮、文字/图片链接、复选框、单选框、甚至时下拉框等
xpath=//
[@]:表示元素定位,定位点击的元素
7.点击按钮
Click Button id=loginBtn
备注:Click Button关键字用于点击页面上的按钮,且使用id定位(这里也可以使用xpath定位)
8.等待元素出现
Wait Until Page Contains Element xpath=//[@] 42 error
这里Wait Until Page Contains Element关键字用于等待页面上的元素显示出来
xpath=//
[@]:表示元素定位。这里定位出现的元素
42:表示最长等待时间,时间单位默认为秒
Error:表示错误提示,自定义错误提示,如:“元素不能正常显示”
9. 获取title
Get Title
备注:get title关键字用于获得当前浏览器窗口的title信息。
但这里只获取title是没有意义的,我们通常会将获取的title传递给一个变量,然后与预期结果进行比较,从而判断当前脚本执行成功。
10.获取text
Get Text xpath=//[@]
备注:get text 关键字用于获取元素的文本信息
xpath=//
[@]: 定位文本信息的元素
11.获取元素属性值
Get Element Attribute id=kw@name
备注:id=kw@name: id=kw表示定位的元素;@name获取这个元素的name属性值。
12.cookie处理

13.验证
①获得浏览器title进行比较
open browser http://localhost:8080/labms ff
${title} Get Title
should contain KaTeX parse error: Expected 'EOF', got '#' at position 67: …ath=//a[@href='#̲login'] ①open b…{title}
③should contain 比较${title}是否等于“实验室开放据实验教学综合管理系统”
备注:若赋值的变量不包含上述内容一次或多次,则运行失败
②获得文本信息进行比较,具体的格式是怎么样的?
${text} Get Text
should contain ${text}
14.表单嵌套

RobotFramework分层设计
1.一般建议将User Keyword放置在Resource下
2.创建Resource步骤:
①在项目名上点击鼠标右键→点击New Resource并新增New Resource(备注:这里新增的资源因为功能类似测试套件,所以测试套件中导入了哪些库,这里也要同步导入)
②在新增的New Resource中右键鼠标新增New User Keyword(备注:这里添加的关键字功能类似测试套件中的测试用例),所有的操作步骤都在指定关键字下编写
③将新增的关键字添加到测试套件/测试用例中,运行用例即可
3.入参设置:
①在关键字/Arguments中用格式${}设置参数变量,有几个参数变量,就设置几个
如下:
[Arguments] ${search} ${b}
Open browser http://127.0.0.1:6060/aeaicrm/index?Login ff
Maximize Browser Window
${title} Get title
sleep 5
should contain ${title} AEAI CRM客户管理系统
Input Text id=userId ${search}
Input Text id=userPwd b S l e e p 25 C l i c k B u t t o n x p a t h = / / i n p u t [ @ c l a s s = ′ b t n − s u b m i t ′ ] 备 注 : 这 里 定 义 的 {b} Sleep 25 Click Button xpath=//input[@class='btn-submit'] 备注:这里定义的 bSleep25ClickButtonxpath=//input[@class=btnsubmit]{},大括号中的字母可以任意命名,只要与编写的测试用例中定义的变量相匹配即可
②在测试用例中,关键字的同行就可以自定义编写变量的值
如下:
登录 CS01 CS01
备注:若在关键字定义时只设置了一个参数变量,那么在执行用例时,关键字的同行也只能输入一个变量信息
问题:
1.为什么有时候写着写着,测试项目与测试套件直接分离了呢?
[Arguments] ${search}
Open browser http://127.0.0.1:6060/aeaicrm/index?Login ff
Maximize Browser Window
${title} Get title
sleep 5
should contain ${title} AEAI CRM客户管理系统
Input Text id=userId ${search}
Input Text id=userPwd ${search}
Sleep 25
Click Button xpath=//input[@class=‘btn-submit’]

AutoItLibrary库

1.在线安装pythwin32 :
pip install pythonwin32
2.安装Autoit V3.314.2
http://www.jianyiit.com/post-139.html

十四、robotframework自动化测试实例
https://blog.csdn.net/zengting927/article/details/77649504

十五、三层结构
业务层:描述测试点如:登录检测
组件层:业务层描述功能点的实现,即实现一个功能点最小的步骤,这层尽量不出现技术关键字。如:输入正确用户名密码,输入错误用户名
实现层:技术关键字:如Input Text id=unam
十六、Robotframework自动化新手常见问题总结–(基础篇)
https://blog.csdn.net/qq_20032133/article/details/53945559
十七、Robotframework进阶方向
①思考如何绕过错误测试用例,继续执行;关键字 run keyword and Ignore Error的用法
②元素置灰(disable)关键字:get element attribute的用法
③弹出框的处理;关键字Dismiss Alert /Choose ok Next Confirmation/Confirm Action/get alert message的用法
④二选一按钮:关键字Select radio button 的用法
⑤get element attribute (获取元素属性)
十八.Robotframework浏览器与驱动匹配
①https://www.cnblogs.com/xiaodouzhou-123/p/10237586.html
②https://blog.csdn.net/liuxueyi521/article/details/86220377
十九、robotframework需要具备的python第三方库

20.robotframework Selenium2Library库关键字中文解释
https://www.jianshu.com/p/95e0e9b74057

你可能感兴趣的:(python随笔,robotframework,UI自动化,python随笔01)