# !/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. 关于微信小程序的本地存储

    微信小程序中会使用wx.setStorage(wx.setStorageSync)来存储数据,问题是:即使小程序被销毁了,本地缓存的数据仍然存在.会造成: 所以要及时清理掉本地缓存的数据.解决思路: ...

  2. Codeforces Round #456 (Div. 2) 912E E. Prime Gift

    题 OvO http://codeforces.com/contest/912/problem/E 解 首先把这个数字拆成个子集,各自生成所有大小1e18及以下的积 对于最坏情况,即如下数据 16 2 ...

  3. 清除文本中Html的标签

    /// <summary> /// 清除文本中Html的标签 /// </summary> /// <param name="Content"> ...

  4. code命令用vscode打开项目代码

    1. 打开vscode, 使用Command + shift + p, 输入shelll 选择

  5. 解决ubuntu安装软件has install-snap change in progress错误

    解决ubuntu安装软件has install-snap change in progress错误 2018年05月06日 13:45:39 山间明月江上清风_ 阅读数:14316 标签: ubunt ...

  6. 7.20套娃(tao)

    套娃(tao) input7 39 53 710 65 102 610 104 110 53 53 9output012 sol: 把查询想象成(x1,y1)向(x2,y2)有边当且仅当(x1< ...

  7. wgs84 转百度经纬度坐标

    /** * wgs84 转百度地图坐标 * @param $lng * @param $lat * @return array */ function toBaiduLocation($lng,$la ...

  8. docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused "exec: \"ping\": executable file not found in $PATH": unknown.

    docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting cont ...

  9. LeetCode 132. 分割回文串 II(Palindrome Partitioning II)

    题目描述 给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串. 返回符合要求的最少分割次数. 示例: 输入: "aab" 输出: 1 解释: 进行一次分割就可将 s ...

  10. data binding 优缺点

    文章: 1. [译文] 我不使用Android Data Binding的四个理由 https://www.jianshu.com/p/559adeaaeffd 2. 原文:https://blog. ...