最近在网上看到一有关于 robot framework 的文章,才知道好些年以前就已经流行了。哎,怪自己孤陋寡闻,于是乎就下载安装了个试用了一段时间发现这框架上手还挺快的。不过要说 robot framework 是一框架还挺勉为其难的,也可说是一工具吧,趋于半自动化。对于刚接触测试行业没多久,也没好的代码能力的测试来说,这无疑是个不错的选择。
1、安装 robot framework 结束后,启动 RIDE 失败
可前提是我已经安装了同版本的 wxPython 2.8.12.1。
解决办法:将 python 重新安装下即可,记住不要卸载,直接覆盖安装。
2、导入自定义库失败
可通过 Tools-View RIDE Log 查看日志
解决办法:在首行添加 #-- coding:gb2312 --
解决办法:是缩进符导致的,建议不要 tab 和空格键混淆使用
上图中我们分了三层:
测试元素层放的是我们的测试步骤
测试流程层放的是测试步骤的组合
测试套件层放的是我们的测试用例
目的:合理分配资源;清晰的项目目录结构易于查找和分类。
robtfreamework 的测试用例是以 project 作为单位进行管理的,一个 project 可以包含多个 Test Suite 文件,每一个 Test Suite 可以包含多条测试用例
【建议】(转载)
先下载第三方库 ExcelLibrary,下载方式 pip install robotframework-ExcelLibrary;在 ride 中按 F5,在关键字的 source 中可以找到 ExcelLibrary,则表示添加成功
新建 excel 文件如下图
选择测试项目右键,添加 new resource,格式为 txt;再选中添加的配置文件,添加 ExcelLibrary
再选择刚添加的配置文件,右键,添加 new user keyword,读取 excel 文件设置如下
编写测试用例
最后用例执行
多线程并发运行 WebDriver 的步骤:1.运行 hub 2.运行 node 3.运行 test case 。下面说下具体实现方法。
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
这个网址。