1 Star 0 Fork 10

davice_li / RoWarlock

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
Apache-2.0

RoWarlock

简介

RoWarlock是基于Selenium 3.X, Appium, MSUIAutomation开发的自动化测试工具。基于.Net 4.5开发,能够测试Web, Client, Mobile等程序。实现了代码与脚本分离,脚本与元素分离,能够实现对UI层进行复杂的自动化测试。 具体使用说明,请查看附件

当前完成度

  • 2017-03-28: 完成EAP版本释放
  • 2017-04-01: 完成EAP版本的DEBUG工作,由于原项目的MD文件有问题,所以重新开了本项目
  • 2017-05-24: 完整正式版本V1.0的开发和Debug工作,新添加Pro的版本内容,支持宏、迭代和循环测试,支持Config配置文件(.tcc)进行参数、宏和测试执行模式的配置

V1.0 版本

  • 当前仅提供Web端测试支持

截图

Pro Command

环境配置

RoWarlock无需复杂的环境配置,仅需安装 .Net 4.5 Framework即可

注意事项

工程项目编码需要设置为UTF-8否则会出现中文乱码情况

已知问题

  • 产出的Extent Reports中,使用的开源工具出现一处错误导致Tests和Steps数量会相等,已提交gitHub,等待解决
  • Pro的版本(GUI) case、steps的成功统计率无法更新,后续版本进行添加该功能

框架APIs

实现的功能

  • 1、XML管理测试脚本和测试对象
  • 2、脚本与测试对象文件强制书写,通过xsd框架文件操控
  • 3、支持数据驱动
  • 4、支持关键字驱动
  • 5、自动生成html报表(通过Extent Reports支持)
  • 6、支持生成.log文件,作为开发log保存。功能由Log4Net支持
  • 7、测试对象与测试流程分离,互不影响

RoWarlock V1.1更新内容

RoWarlock V1.1

  • 更新Tci的Samples
  • 更新所有的Tci文件中的控件Id
  • 更新xsd文件
  • 更改了程序中关于读取tci文件的逻辑和方法
  • 更改使用控件ID的方法,现在分为2种文件,一种是普通tci文件,如下文档

<?xml version="1.0" encoding="utf-8"?>

<xs:schema attributeFormDefault="qualified"
           elementFormDefault="qualified"
           targetNamespace="http://tempuri.org/DemoForWeb1.tci"
           xmlns:demoforweb1="http://tempuri.org/DemoForWeb1.tci"
           xmlns:xs="http://www.w3.org/2001/XMLSchema">
  
  <!--TODO 正式使用时,请将所有的后缀 “1”删除-->
  <!--
  ==============================================================================
  ******************************************************************************
                                  Documentation
  ******************************************************************************
  ==============================================================================
  -->

  <!--******************************************************************************
    TODO 2017-06-05更新Tci文件中控件的命名规则
    By:冯涛(Nate Ford)
    
    1.控件名称需要明确表达控件的作用,具有简单明了的表现形式
    2.控件名称以'驼峰形式表达',首字母为大写字母,允许简写形式,但不允许使用拼音。正确表达例如:FindElement
    3.控件名称需要跟随控件形式,以"_"下划线跟随控件形式,且放置于表形式的最后,正确表达例如:FindElement_Btn
    4.控件名称中附属的限定值跟随在名称后,以"_"+"限定值"的形式表现,正确表达例如:FindElement_Left_Btn、FindElement_1_Btn等
    
    控件形式为:
    按钮/Button ——> _Btn
    显示字符/Label ——> _Lbl
    文本框/Text ——> _Text
    复选项/RadioBoxButton ——> _Rbn
    勾选项/CheckBoxButton ——> _Cbn
    列表/Table ——> _Tbl
    单行或单列数据/List  ——> _Lst
    
    Web特有的:
    IFrame ——> _Frm
    ******************************************************************************-->


  <xs:annotation>
    <xs:documentation>
      RoWarlock 测试脚本Web控件
      版权 著作权归属冯涛所有
      Author: 冯涛
      E-mail: fengtao.1314520@163.com
      Skype/MSN: fengtao.1314520@hotmail.com
      Gmail: fengtao.1314520@gmail.com

      DemoForWeb文件,控件书写的格式 样式
    </xs:documentation>
  </xs:annotation>


  <!--************************************************************************************************************************
      Todo 更新2017-06-06,为了在tcs文件中,可以智能输出控件,因此更改了tci文件的写法,基于SimpleType(简单类型)更改,利用已用的节点名称进行判断
      enumeration
      value:simpleType的Name值+enumeration的id值
      id:控件Id名 允许id名称不填写
      
      appinfo
      source:原Locator值,需要手动书写是Id,XPath或其他
             在尖括号之间填写控件值
      *************************************************************************************************************************-->


  <xs:simpleType name="DemoForWeb1"><!--文件名称即name-->
    <xs:restriction base="xs:string"><!--不用更改-->
      <!--单个控件-->
      <xs:enumeration value="DemoForWeb.Menu_01_Btn"><!--value是simpleType的Name值+控件名称-->
        <xs:annotation>
          <xs:appinfo source="XPath">//*[@id="MENU_01"]</xs:appinfo><!--第一行source:原Locator值,需要手动书写是Id,XPath或其他值。在尖括号之间填写控件值-->
          <xs:appinfo source="Index" /><!--第二行source:原Index值,如果没有则不填,如果有,则填写在尖括号之间-->
          <xs:documentation>
            菜单栏中按钮
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>

      <!--单个控件-->
      <xs:enumeration value="DemoForWeb.Menu_01_Btn"><!--value是simpleType的Name值+控件名称-->
        <xs:annotation>
          <xs:appinfo source="XPath">//*[@id="MENU_01"]</xs:appinfo><!--第一行source:原Locator值,需要手动书写是Id,XPath或其他值。在尖括号之间填写控件值-->
          <xs:appinfo source="Index">1</xs:appinfo><!--第二行source:原Index值,如果没有则不填,如果有,则填写在尖括号之间-->
          <xs:documentation>
            菜单栏中按钮
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>

    </xs:restriction>
  </xs:simpleType>

</xs:schema>

第二中是被总tci文件调用文件

<?xml version="1.0" encoding="utf-8"?>

<xs:schema attributeFormDefault="qualified"
           elementFormDefault="qualified"
           targetNamespace="http://tempuri.org/ComTci1.tci"
           xmlns:ComTci1="http://tempuri.org/ComTci1.tci"
           xmlns:demoforweb1="http://tempuri.org/DemoForWeb1.tci"
           xmlns:xs="http://www.w3.org/2001/XMLSchema">

 <!--TODO 正式使用时,请将所有的后缀 “1”删除-->
  <!--
  ==============================================================================
  ******************************************************************************
                                  Documentation
  ******************************************************************************
  ==============================================================================
  -->

  <xs:annotation>
    <xs:documentation>
      RoWarlock 测试脚本Web控件
      版权 著作权归属冯涛所有
      Author: 冯涛
      E-mail: fengtao.1314520@163.com
      Skype/MSN: fengtao.1314520@hotmail.com
      Gmail: fengtao.1314520@gmail.com

      控件tci文件集合
    </xs:documentation>
  </xs:annotation>

  <!--
  ==============================================================================
  ******************************************************************************
                                     Imports
                         TODO 每添加一个tci文件,都需要新增一次import
  ******************************************************************************
  ==============================================================================
  -->

  <xs:import namespace="http://tempuri.org/DemoForWeb1.tci" />


  <!--************************************************************************************************************************
      Todo 更新2017-06-06,为了在tcs文件中,可以智能输出控件,因此更改了tci文件的写法,基于SimpleType(简单类型)更改,利用已用的节点名称进行判断
      所有Tci文件的总控制,被RoWebAutomation.xsd调用
      每增加一个tci,都需要添加到memberTypes中,通过空格(" ")进行分拆,本身节点不被读取、解释
      *************************************************************************************************************************-->


  <!--被RoWebElement.xsd调用-->
  <xs:simpleType name="WebEleSimple">
    <xs:union memberTypes="demoforweb1:DemoForWeb1"/>
  </xs:simpleType>


</xs:schema>

感谢

  • 感谢Selenium提供Web端的功能实现(开发完成)
  • 感谢Appium提供Mobile端的功能实现(开发中)
  • 感谢MSUIAutomation提供Client端的功能实现(开发中)

个人感悟

暂无

Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. "Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). "Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. "Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." "Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. 2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. 3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. 4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and (b) You must cause any modified files to carry prominent notices stating that You changed the files; and (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. 5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. 6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. 8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. 9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. END OF TERMS AND CONDITIONS APPENDIX: How to apply the Apache License to your work. To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "{}" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. Copyright 2017 紫竹蜚凝(包括但不限于 紫竹蜚凝、Nate、Nate Ford、冯涛均指同一人) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

简介

基于Selenium, Appium, MS UIAutomaiton的自动化测试工具,覆盖Web, Client, Mobile三类测试对象,实现对UI层的功能性自动化测试。Update:全新的V 1.5正在开发中... 展开 收起
C#
Apache-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
C#
1
https://gitee.com/davice_li/RoWarlock.git
git@gitee.com:davice_li/RoWarlock.git
davice_li
RoWarlock
RoWarlock
master

搜索帮助