# !/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. Springboot静态资源映射 “/” 引发的血案

    因为少写一个 / 浪费已个下午的时间,

  2. 使用html2canvas在手机端独立实现h5页面转图片

    需求 方便用户把每日消息的海报图片分享到微信朋友圈进行消息扩散 实现方案 使用html2canvas 插件,html2canvas 1.0.0-alpha.11 ,github地址:https://g ...

  3. Webpack v4.8.3 快速入门指南

    一.进入 https://webpack.docschina.org/ 官方文档,点击 "文档" 进入 文档页面,文档中包含  “概念,配置,API,指南,LOADERS,插件&q ...

  4. 记录一下UILabel加载富文本 iOS

    一般情况下我们都习惯用webview加载富文本.但是webview比较消耗内存.然后发现其实本身可以用uilabel加载,性能还不错就记录下~~ 核心方法下面两个 -(NSMutableAttribu ...

  5. 【高维前缀和】8.15B. 组合数

    题目分析 没有接触过高维前缀和的话会有一点抽象

  6. 洛谷P2135 方块消除

    洛谷题目链接 动态规划(真毒瘤!) 变量声明: $val[i]$:表示第$i$块颜色 $num[i]$:表示第$i$块颜色数量 $sum[i]$:表示$num$的前缀和 我们设计状态$f[l][r][ ...

  7. HGOI 20191105 题解

    Problem A Joker 老虎和蒜头是好朋友. 夏天过去了,凉爽的秋天来临,老虎和蒜头又有了新的娱乐项目.老虎有一个远房表亲是西伯利亚虎,那里流行着一个纸牌游戏:两位玩家参与游戏,道具是一副54 ...

  8. vue-cli 3.x 修改dist路径和在本地查看方法

    打包文件路径问题 需要在项目的根目录添加一个vue.config.js.在这个文件中,我们可以进行一些个性化定制. module.exports = { // 基本路径 baseUrl: './', ...

  9. IP地址正则表达式的写法

    IP地址的正则表达式写法 这里讲的是IPv4的地址格式,总长度 32位=4段*8位,每段之间用.分割, 每段都是0-255之间的十进制数值. 将0-255用正则表达式表示,可以分成一下几块来分别考虑: ...

  10. Java编程思想代码环境配置

    官方代码网站已更改 https://github.com/BruceEckel/TIJ4-code 如果导入到IntelliJ中 方法1 在IntelliJ中新建一个Java项目将TIJ4-code- ...