Robot Framework 学习中的一些笔记
Robot Framework遇到的坑1、安装robot framework结束后,启动RIDE失败
可前提是我已经安装了同版本的wxPython 2.8.12.1。
解决办法:将python重新安装下即可,记住不要卸载,直接覆盖安装。
2、导入自定义库失败
可通过Tools-View RIDE Log查看日志
解决办法:在首行添加 #-- coding:gb2312 --
解决办法:是缩进符导致的,建议不要tab和空格键混淆使用
Robot Framework认知
Robot framework是一款开源的,基于python编写的功能自动化测试框架,具备良好的可扩展性,
支持关键字驱动,让人以自然语言的格式来描述测试用例,然后其中的关键字就会转化为行为,
即函数的调用。
Robot framework是通过测试库识别被测对象,有很多自带的或第三方开源测试库,如测试web客
户端的selenium2Library;另外测试人员也可以根据业务需求创建自己需要的测试库。
Robot framework支持分层设计,可以把步骤封装到关键字中,然后在用例中调用关键字和传入
参数,一般分为元素层放我们的测试步骤,业务逻辑层放测试步骤的组合,测试套件层放测试用例。
测试用例使用文本文件保存,使用制表符分隔数据,可以方便的使用任何文本编辑器或excel编
辑测试用例,也可以使用html格式创建用例。
Robot framework提供了远程测试执行接口,可以进行分布式测试;另外可以与版本管理工具
结合,进行持续集成
Robot Framework分层思想
上图中我们分了三层:
测试元素层放的是我们的测试步骤
测试流程层放的是测试步骤的组合
测试套件层放的是我们的测试用例
Robot Framework项目目录结构设置
目的:合理分配资源;清晰的项目目录结构易于查找和分类。
robtfreamework的测试用例是以project作为单位进行管理的,一个project可以包含多个Test Suite
文件,每一个Test Suite可以包含多条测试用例
【建议】(转载)
测试案例里面最好只引用测试模板,放置测试数据。
业务逻辑独立出来一层,可以通过业务关键字来任意组合。
公用的模块可以放一个文件夹,不同的业务关键字也可以放置不同的文件夹
测试套件和业务关键字都可以按业务划分,然后底层关键字放置一个文件夹。这样结构清晰,管理
方便。
Robot Framework读取excel文件
先下载第三方库ExcelLibrary,下载方式pip install robotframework-ExcelLibrary;在ride中按F5,在
关键字的source中可以找到ExcelLibrary,则表示添加成功
新建excel文件如下图
选择测试项目右键,添加new resource,格式为txt;再选中添加的配置文件,添加ExcelLibrary
再选择刚添加的配置文件,右键,添加new user keyword,读取excel文件设置如下
编写测试用例
最后用例执行
Robot Rramework分布式并发执行
多线程并发运行WebDriver的步骤:1.运行hub 2.运行node 3.运行test case 。下面说下具体实现方法。
主节点机器上运行hub,在命令行中输入: java -jar selenium-server-standalone-2.46.0.jar -role
hub -maxSession 40 -port 4444
🔱 参数中必须指明-role hub才是运行hub。默认端口是4444,如果端口被占用就需要指定其他。
-maxSession是最大处理的会话请求,这里设置为40。如果不指定的话,默认是1(即单线程模式了)。
子节点机器上运行node。(先说下运行一个node情况)在命令行中输入(下面的命令是一行敲完):
🔱 java -Dwebdriver.chrome.driver=C:\Users\zxl\AppData\Local\Google\Chrome\Application\chrome
.exe -jar selenium-server-standalone-2.46.0.jar -role node -hub http://192.168.1.73:4444/grid/
register -maxSession 20 -browser "browserName=chrome,version=52.0.2743.116,platform=
WINDOWS,maxInstances=20" -port 5555
🔱 由于node是可以运行在不同系统上的,所以指定驱动位置- Dwebdriver.chrome.driver=C:\Users
\zxl\AppData\Local\Google\Chrome\Application\chrome.exe。参数中必须指明-role node才是运行
node。参数-hub后面是第一步中hub的IP和端口:http://hub的IP:端口/grid/register 。node默
认的maxSession的值就是5(最多并发5个浏览器),如果用IE浏览器的话,就算你的测试case是多
线程,最终也会是一个一个的执行。但是如果在后面的-browser的参数中指明maxInstances=5,
那么就会同时运行5个浏览器。运行node后,窗口中也会显示该node的信息。-port是端口号,默
认端口是5555,如果端口被占用就需要指定其他。如果你启动第二个node的话,端口就必须指定
了,不能是5555。
启动完成连接到主节点后,可以在主节点机子上 ,http://192.168.1.73:4444/grid/console网址查
看到这个子节点状态。使用同样的方法,可以链接其它的子节点。
运行test case,上面已经把Grid弄成功了,现在我们用Grid来运行一个很简单的例子。代码如下:
import java.net.MalformedURLException;
import java.net.URL;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
public class GridTest {
/**
* @throws MalformedURLException
*/
public static void main(String[] args) throws MalformedURLException {
DesiredCapabilities test = DesiredCapabilities.chrome();
WebDriver dr = new RemoteWebDriver(new URL("http://192.168.1.73:5555/wd/hub"),test);
dr.get("http://www.baidu.com");
}
}
在主节点机子上运行上面的代码,你可以在次节点机子上看到chrome浏览器被启动,然后打开了www.baidu.com这个网址。
:victory:
页:
[1]