1、浏览器的无头(headless)模式

最近因为想把rf的脚本集成到jenkins上去,所以就在研究一些相关的方法,根据以往的经验和请教别人再结合我们现有的jenkins job主要准备分几个步骤:

1)在jenkins所在的服务器上安装运行RF脚本的必要软件;

2)把rf的脚本转换成为headless运行

3)在jenkins 的job中配置写pipeline或者命令行

4)构件jenkins

查了一些资源也自己实践了一下总算实现了headless运行rf脚本并且不影响截图

chrome的headless设置如下:

chrome_headless
    [Arguments]    ${url}
    ${proxy}=    Evaluate    selenium.webdriver.chrome.options.Options()    modules=selenium,selenium.webdriver
    call Method    ${proxy}    add_argument    --headless
    call Method    ${proxy}    add_argument    --disable-gpu
    #call Method    ${proxy}    add_argument    --disable-infobars    #禁止浏览器上“自动化控制程序”的弹出框
    Create Webdriver    Chrome    chrome_options=${proxy}
    set window size    1000    800
    Maximize Browser Window
    go to    ${url}

firefox的headless设置如下:

firefox_headless
    [Arguments]    ${url}
    ${proxy}=    Evaluate    selenium.webdriver.firefox.options.Options()    modules=selenium,selenium.webdriver
    call Method    ${proxy}    add_argument    --headless
    call Method    ${proxy}    add_argument    --disable-gpu
    #call Method    ${proxy}    add_argument    --disable-infobars    #浏览器上自动化控制的弹出框
    Create Webdriver    Firefox    firefox_options=${proxy}
    set window size    1000    800
    #Maximize Browser Window
    go to    ${url}

常用参数设置:

 --window-size=1366,768有问题可以直接使用set window size    1000    800

 

chrome和firefox运行结果都没有问题,但是有以下两个问题:

1)chrome运行bim功能测试中3dviewer的过程,日志,截图都没有问题,运行GIS场景相关的测试脚本截图中没有看到模型,查阅很多资料通过zoomin到模型中、设置屏幕尺寸都没有解决;

2)于是就使用firefox试了一下,发现GIS的相关脚本截图没有问题可以显示相应的模型,但是脚本跑不通,后面自己在控制台试了一下,才发现firefox浏览器的控制台要点【运行】那个按钮才能执行js脚本,网上说是因为selenium和firefox版本不一致导致的

3)今天又试了半天本来以为是chrome版本的问题,结果发现是因为等待时间过短(之前没考虑到这一点是因为一直认为无头模式应该比有头模式等待时间更短才对,现实讲明可能要更长一点);另外无头模式中设置分辨率也会让GIS场景中的等待时间更长,最好直接把浏览器设置成最大,反而会缩短等待时间。

2、命令行运行rf脚本:

1)首先要定位到项目代码所在的目录,打开cmd窗口

2)执行相关的命令:

robot -d C:\Users\******\Desktop --test 测试用例名称  E:\script\robotframework\automation-jssdk\JSSDK_Auto\Script\TestCases\测试集名称.robot

其中-d 代表把log.html、report.html、output.xml这三个文件就保存到C:\Users\******\Desktop目录;

--test 测试用例名称  测试集名称   代表执行指定测试集中的测试用例

其它的命令参数 可以通过robot --help查询尝试

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐