selenium+chrome+testng+ant 实现lin

2018-12-11  本文已影响0人  边走边玩FREE

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,才能执行
上一篇下一篇

猜你喜欢

热点阅读