<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Robotframework | 伪架构师</title>
    <link>/tags/robotframework/</link>
      <atom:link href="/tags/robotframework/index.xml" rel="self" type="application/rss+xml" />
    <description>Robotframework</description>
    <generator>Source Themes Academic (https://sourcethemes.com/academic/)</generator><language>zh</language><lastBuildDate>Tue, 20 Dec 2016 07:18:13 +0800</lastBuildDate>
    <image>
      <url>/img/logo-wide.png</url>
      <title>Robotframework</title>
      <link>/tags/robotframework/</link>
    </image>
    
    <item>
      <title>Robotframework &#43; selenium2library 实现 Headless 模式的 Web 功能测试</title>
      <link>/post/robotframework-selenium2library-for-headless-test/</link>
      <pubDate>Tue, 20 Dec 2016 07:18:13 +0800</pubDate>
      <guid>/post/robotframework-selenium2library-for-headless-test/</guid>
      <description>

&lt;blockquote&gt;
&lt;p&gt;今天来点小技巧凑个数。
感谢健哥提供的 Hello world 样本。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;之前因为做一些 CI/CD 的尝试，做了个要你命三千一样的 Jenkins 镜像（docker pull dustise/jenkins），其中包含了 Maven、Sornar Scanner、Robot Framework 以及 Git/Subversion、Kubectl 等一系列的相关工具。&lt;/p&gt;

&lt;p&gt;一旦用起来，测试的兄弟发现了个大问题，基于 selenium2library 的页面功能测试无法完成了，回头一想，镜像里面压根没有浏览器，怎么可能执行浏览器测试呢。&lt;/p&gt;

&lt;h2 id=&#34;安装&#34;&gt;安装&lt;/h2&gt;

&lt;p&gt;首先就要安装浏览器了，我这里选择了 FireFox。&lt;/p&gt;

&lt;p&gt;&lt;code&gt;apt-get install -y firefox&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;为了让 selenium2library 能够同 FireFox 互动，还需要 geckodriver 的支持，这个软件提供了 WebDriver 协议所需的 HTTP API，能够和 FireFox 这样的 Gecko 浏览器进行通信。&lt;/p&gt;

&lt;p&gt;&lt;code&gt;wget -O - https://github.com/mozilla/geckodriver/releases/download/v0.11.1/geckodriver-v0.11.1-linux64.tar.gz | tar xzf - --directory=/usr/local/bin&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;下载后生成的可执行文件需要放置在 &lt;code&gt;$PATH&lt;/code&gt; 里，以便被 selenium 调用。&lt;/p&gt;

&lt;p&gt;接下来，为了自动测试的需要，要在 Headless 的情况下运行 FireFox，这里又需要 xvfb 的支持，简单的使用 &lt;code&gt;apt-get install -y xvfb&lt;/code&gt; 就可以了。&lt;/p&gt;

&lt;p&gt;这个包带有一个 xvfb-run 命令，其功能是在虚拟 X 服务器环境下运行命令。&lt;/p&gt;

&lt;h2 id=&#34;测试&#34;&gt;测试&lt;/h2&gt;

&lt;p&gt;首先我们生成一个 /tmp/test.robot 文件，内容如下&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;*** Settings ***
Library           Selenium2Library

*** Test Cases ***
testHelloWorld
    open browser    http://www.qq.com    firefox
    maximize browser window
    page should contain    0755
    [Teardown]    close browser
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;测试目的很简单，看 &lt;code&gt;http://www.qq.com&lt;/code&gt; 中有没有 &amp;ldquo;0755&amp;rdquo; 这个字符串。&lt;/p&gt;

&lt;p&gt;接下来用 robot 运行：&lt;/p&gt;

&lt;p&gt;&lt;code&gt;xvfb-run robot sample.robot&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;网络通畅的情况下，会得到类似这样的结果。&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;==============================================================================
Sample
==============================================================================
testHelloWorld                                                        | PASS |
------------------------------------------------------------------------------
Sample                                                                | PASS |
1 critical test, 1 passed, 0 failed
1 test total, 1 passed, 0 failed
==============================================================================
Output:  /output.xml
Log:     /log.html
Report:  /report.html
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;同时会生成三个结果文件供后续分析。&lt;/p&gt;

&lt;p&gt;上述安装内容移植 Docker Build 过程中，就能够构造出用于 Web 功能测试的 Jenkins Node 了。&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>
