51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2461|回复: 3
打印 上一主题 下一主题

Robot Framework 学习中的一些笔记

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-2-27 14:20:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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文件如下图



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2018-2-27 14:23:20 | 只看该作者
选择测试项目右键,添加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来运行一个很简单的例子。代码如下:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2018-2-27 14:24:12 | 只看该作者
  1. import java.net.MalformedURLException;
  2. import java.net.URL;
  3. import org.openqa.selenium.WebDriver;
  4. import org.openqa.selenium.remote.DesiredCapabilities;
  5. import org.openqa.selenium.remote.RemoteWebDriver;
  6. public class GridTest {
  7. /**
  8. * @throws MalformedURLException
  9. */
  10. public static void main(String[] args) throws MalformedURLException {
  11. DesiredCapabilities test = DesiredCapabilities.chrome();
  12. WebDriver dr = new RemoteWebDriver(new URL("http://192.168.1.73:5555/wd/hub"),test);
  13. dr.get("http://www.baidu.com");
  14. }
  15. }
复制代码
在主节点机子上运行上面的代码,你可以在次节点机子上看到chrome浏览器被启动,然后打开了www.baidu.com这个网址。

回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-17 20:41 , Processed in 0.064506 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表