# !/usr/bin/env python
# -*- coding:utf-8 -*- from appium import webdriver
import time
import unittest
import HTMLTestRunner
import sys
reload(sys)
sys.setdefaultencoding("utf-8") class Preview(unittest.TestCase): def setUp(self):
desired_caps = {}
desired_caps['platformName'] = 'Android' # 设备系统
desired_caps['platformVersion'] = '5.1' # 设备系统版本
desired_caps['deviceName'] = '6HHIN7RCFARCKFRO' # 设备名称
desired_caps['appPackage'] = 'cn.j.hers' # 测试app包名
desired_caps['appActivity'] = 'cn.j.guang.ui.activity.StartActivity' # 测试appActivity
self.dr = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) # 启动app def tearDown(self):
self.dr.quit() def test_four_submit(self):
"""验证:兴趣选择页面四个按钮无法提交"""
time.sleep(10)
if len(self.dr.find_elements_by_id("cn.j.hers:id/dialog_title")) != 0:
# 若出现通知栏则点击取消
self.dr.find_element_by_id("cn.j.hers:id/dialog_cancel").click()
time.sleep(2)
self.dr.find_elements_by_id("cn.j.hers:id/tag_options_12_btn")[2].click()
self.dr.find_elements_by_id("cn.j.hers:id/tag_options_11_btn")[1].click()
self.dr.find_elements_by_id("cn.j.hers:id/tag_options_22_btn")[4].click()
time.sleep(2)
# 断言提交按钮不可点击,若是可点击直接用例失败
self.assertTrue(self.dr.find_element_by_id("cn.j.hers:id/tag_optoins_bottom_txt").is_enabled()) def test_five_submit(self):
"""验证:兴趣选择页面按钮的取消以及选择&提交5个兴趣选择"""
time.sleep(10)
if len(self.dr.find_elements_by_id("cn.j.hers:id/dialog_title")) != 0:
# 若出现通知栏则点击取消
self.dr.find_element_by_id("cn.j.hers:id/dialog_cancel").click()
time.sleep(2)
self.dr.find_elements_by_id("cn.j.hers:id/tag_options_12_btn")[2].click()
self.dr.find_elements_by_id("cn.j.hers:id/tag_options_23_btn")[1].click()
self.dr.find_elements_by_id("cn.j.hers:id/tag_options_11_btn")[1].click()
self.dr.find_elements_by_id("cn.j.hers:id/tag_options_22_btn")[4].click()
self.dr.find_elements_by_id("cn.j.hers:id/tag_options_11_btn")[0].click()
self.dr.find_elements_by_id("cn.j.hers:id/tag_options_23_btn")[0].click()
# 选择额外的5个按钮,并且取消默认选项
time.sleep(2)
self.dr.find_element_by_id("cn.j.hers:id/tag_optoins_bottom_layout").click()
# 点击提交按钮,进入首页
time.sleep(5)
self.assertTrue(self.dr.find_element_by_id("cn.j.hers:id/common_left_buy_layout_button").is_displayed()) if __name__ == '__main__':
suite = unittest.TestSuite()
suite.addTest(Preview('test_four_submit'))
suite.addTest(Preview('test_five_submit'))
now = time.strftime('%Y-%m-%d %H_%M_%S') # 指定时间格式
path = 'D:/case/HersReport/' + now + "preview.html"
fp = open(path, 'wb')
# 定义报告存放的路径
runner = HTMLTestRunner.HTMLTestRunner(
stream=fp,
title=u'她社区兴趣选择页面自动化测试报告',
description=u'用例执行简述')
# 定义测试报告展示样式
runner.run(suite)
# 执行测试用例
fp.close()
# 必须关闭文件,否则报告为空

后附执行完的测试报告:

appium的第一个实例的更多相关文章

  1. 【C# -- OpenCV】Emgu CV 第一个实例

    原文 [C# -- OpenCV]Emgu CV 第一个实例 Emgu CV下载地址 http://sourceforge.net/projects/emgucv/files/ 找最新的下就行了,傻瓜 ...

  2. Thrift教程初级篇——thrift安装环境变量配置第一个实例

    前言: 因为项目需要跨语言,c++客户端,web服务端,远程调用等需求,所以用到了RPC框架Thrift,刚开始有点虚,第一次接触RPC框架,后来没想到Thrift开发方便上手快,而且性能和稳定性也不 ...

  3. Konckout第一个实例:简单数据模型绑定

    Konck是什么: http://www.aizhengli.com/knockoutjs/50/knockout.html 使用:直接引入knockout.js文件 第一个实例:实现输入框输入值改变 ...

  4. Vue.js学习和第一个实例

    第一个实例效果图: 1.node.js下载,然后安装.下载地址:链接:http://pan.baidu.com/s/1o7TONhS 密码:fosa 2.下载Vue.js.链接:http://pan. ...

  5. Highmaps网页图表教程之Highmaps第一个实例与图表构成

    Highmaps网页图表教程之Highmaps第一个实例与图表构成 Highmaps第一个实例 下面我们来实现本教程的第一个Highmaps实例. [实例1-1:hellomap]下面来制作一个中国地 ...

  6. JAVA-MyEclipse第一个实例

    相关资料: <21天学通Java Web开发> 实例代码: MyEclipse第一个实例1.打开MyEclipse程序.2.在PacKage视图->右击->New|Web Pr ...

  7. C# 实现程序只启动一次(多次运行激活第一个实例,使其获得焦点,并在最前端显示)

    防止程序运行多个实例的方法有多种,如:通过使用互斥量和进程名等.而我想要实现的是:在程序运行多个实例时激活的是第一个实例,使其获得焦点,并在前端显示. 主要用到两个API 函数: ShowWindow ...

  8. 小白的springboot之路(一)、环境搭建、第一个实例

    小白的springboot之路(一).环境搭建.第一个实例 0- 前言 Spring boot + spring cloud + vue 的微服务架构技术栈,那简直是爽得不要不要的,怎么爽法,自行度娘 ...

  9. 学习WCF入门的第一个实例

    一.概述 WCF说白了就是一个基于终结点的通信手段!就是Service端提供一定的功能实现,然后暴露出一个或多个终结点,Client端调用Service端的功能(可以理解为调用一个函数),那么Clie ...

随机推荐

  1. 数字证书注册审批机构(RA)

    1.证书注册审批机构 RA(Registration Authority),数字证书注册审批机构.RA系统是CA的证书发放.管理的延伸.它负责证书申请者的信息录入.审核以及证书发放等工作:同时,对发放 ...

  2. spring boot2X代码混淆

    为了防止代码很容易被反编译而造成泄露,所以打包时进行代码混淆 使用 proguard-maven-plugin插件 <build> <finalName>${artifactI ...

  3. sql server 遍历表成一棵树结构

    一棵树的层次结构都在一张表内,当有这样的需要的时候.. 可以这样玩: <!-- DepartmentDTO 对象对应 department表_查询sql --> <sql id=&q ...

  4. Luogu P2146 [NOI2015]软件包管理器 树剖

    卸载:把子树清空: 安装:把自己到$1$的链改为$1$ #include<cstdio> #include<iostream> #include<cstring> ...

  5. PHP mysqli_fetch_assoc() 函数

    从结果集中取得一行作为关联数组: <?php // 假定数据库用户名:root,密码:123456,数据库:RUNOOB $con=mysqli_connect("localhost& ...

  6. Syn Flood 攻击

    什么是SYN Flood攻击? SYN Flood (SYN洪水) 是种典型的DoS (Denial of Service,拒绝服务) 攻击.效果就是服务器TCP连接资源耗尽,停止响应正常的TCP连接 ...

  7. Nim积的一种???的写法

    Nim积总不能一直打四次暴力吧! 用SG定理等东西,可以证明 \((N, \oplus, \otimes)\) 构成一个域.(证明很难,我不会) 其中 \(\oplus\) 为异或, \(x \oti ...

  8. AGC032F One Third

    很奇怪的一个题.看见了无从下手.概率期望好题. 给一个面积为 \(1\) 的圆,经过圆心随机幅角切直径 \(n\) 次,定义 \(f(x) = \min |S - \frac{1}{3}|\),其中 ...

  9. .NetCore 读取配置文件

    1.创建config.json配置,并设置成始终复制 2.需要安装 nuget 包 Microsoft.Extensions.Configuration .Microsoft.Extensions.C ...

  10. python 获取数字在内存的内容

    #coding=utf- from struct import pack,unpack byte=pack('f',1.5) print(byte) print([i for i in byte]) ...