selenium+chrome+testng+ant 实现linux下无界面自动化测试-初级

window平台下的 自动化测试很好处理,但有些特殊情况需要在linux下进行测试,并且是在脚本命令下执行时。就需要无界面的操作了。具体如下:

一 软件安装部署

使用的软件版本如下:
chrome:66 下载地址:自己找
Seleniume:3.11 下载地址:http://selenium-release.storage.googleapis.com/index.html
ChromeDriver:2.38 下载地址:http://npm.taobao.org/mirrors/chromedriver/
TestNG: 6.9.9
注:官方网站下载速度慢,这里提供个人资源下载链接:

  1. 安装chrome
    自己百度

2.安装chromedriver
解压下载的文件,将文件复制到/usr/bin/ 目录下,然后更改添加执行权限,具体操作如下:

  #unzip chromedriver_linux64.zip
  #cp chromedriver /usr/bin/
  # chmod +x /usr/bin/chromedriver
  1. 安装ant
    自己百度

二 代码编写

这里是基于java的自动化测试,因此现在Eclipse编写测试的代码,最后再整理到Linux平台运行。

  1. 导入项目中需要用到的jar包,包括selenium 下的所有jar包,以及testng-6.9.9jar包。
  2. 创建测试文件,代码如下:
 @Test
public void TestOne()
{
   System.setProperty("webdriver.chrome.driver", "/usr/bin/chromedriver"); //设置浏览器驱动位置
   System.setProperty("webdriver.chrome.bin", "/opt/google/chrome/chrome"); //设置浏览器运行文件位置
        
   ChromeOptions options = new ChromeOptions(); 
   options.addArguments("headless");   //无界面化
   options.addArguments("no-sandbox");  //禁用沙箱
       
  WebDriver  diver  = new ChromeDriver(options); //启动浏览器
   diver.get("http://www.baidu.com"); //访问百度
   System.out.println(diver.getTitle()); // 输出title
}
  1. 生成testng文件。在Eclipse中选择项目,右键 TestNG-》Convert to TestNG,可以自动生成testng.xml文件(需要Eclipse安装testng插件); 自己新建一个xml文件,自己补充参数。tesng.xml实例文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="none">
  <test name="Test">
    <classes>
          <class name="Test1">
          <methods>
          <include name="TestOne"></include>
          </methods>
          </class>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->

-suite: TestNg执行的单元
-classes: 执行的类列表,当有多个类需要执行时,在该处配置
-class:执行的类,改成自己的实际的类名
-methods:执行的方法,在methods中添加include,包含的测试方法,都会顺序执行。

  1. 创建build.xml文件。可以通过Eclipse自动导出,也可以自己创建。执行testng.xml 代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<project name="Test" default="Test" basedir=".">
    
    
    <property name="testng.output.dir" value="test-output"/>
    <property name="testdir" location="testdir"/>
    <property name="srcdir" location="src" />
    <property name="testng.file" value="testng.xml"/>
    <property name="libdir" location="${basedir}/libs" />
    <property name="full-compile" value="true" />

    <taskdef resource="testngtasks" classpath="${libdir}/testng-6.9.9.jar"></taskdef>
    <!-- Define<testng> task -->  

    <!-- 定义库目录路径 -->
      
       <!-- path元素用来表示一个类路径  refid:对当前构建文件中某处定义的一个path的引用 location:表示一个文件或目录,ant在内部将此扩展为一个绝对路径-->
       <path id="classpath.base"/>
       <path id="classpath.test">
       <!-- fileset定义一组文件,dir:表示fileset的基目录 includes:需要包含的文件模式列表 -->
          <fileset dir="${libdir}" includes="*jar"/>
          <pathelement location="${testdir}" />
          <path refid="classpath.base" />
       </path>
       
       <!-- target标签,name:目标名称,必须有  depends:依赖的目标 -->
       <target name="clean" >
       <!-- delete标签,删除一个文件或一组文件。verbose:指定是否列出所删除的文件,默认不列出 -->
          <delete verbose="${full-compile}">
            <fileset dir="${testdir}" includes="**/*.class" />
          </delete>
       </target>
       <target name="compile" >
            <mkdir dir="${testdir}"/>
            
       <!-- javac标签,用于编译一个或一组java文件。srcdir:源程序的目录 destdir:class文件的输出目录 verbose:表示提供详细的输出信息  classpath:所使用的类的路径-->
          <javac srcdir="${srcdir}" destdir="${testdir}" includeantruntime="off" debug="on" debuglevel="lines,vars,source"
             verbose="${full-compile}">
             <classpath refid="classpath.test"/>
             <compilerarg line="-encoding UTF-8 "/>  
          </javac>
       </target>


        <!-- outputdir testng执行的报告输出目录   classpathref 引用的的类    -->
       <target name="Test" depends="compile">
        <testng outputdir="${basedir}\test-output" classpathref="classpath.test"  delegateCommandSystemProperties="true"> 
          <xmlfileset dir="${basedir}" includes="testng.xml"/>    
        </testng>  
       </target>
       
    </project>
  1. 整理代码,在项目目录下,删除其他的文件,只留下 src,libs,testng.xml,build.xml即可。 将代码打包到linux平台下,通过ant执行,如下:
              ant -f build.xml   //需要提前安装好ant,才能执行
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,634评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,951评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,427评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,770评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,835评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,799评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,768评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,544评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,979评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,271评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,427评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,121评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,756评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,375评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,579评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,410评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,315评论 2 352

推荐阅读更多精彩内容