# !/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. ThreadPoolExecutor源码分析二

      接上文,这里继续分析源码 private static final int COUNT_BITS = Integer.SIZE - 3; private static final int CAPA ...

  2. ubuntu彻底删除git

    参考:ubuntu彻底卸载软件 找到此软件名称,然后sudo apt-get purge ......(点点为为程序名称),purge参数为彻底删除文件,然后sudo apt-get autoremo ...

  3. python之collections模块(OrderDict,defaultdict)

    前言: import collections print([name for name in dir(collections) if not name.startswith("_" ...

  4. PHP常见设计模式

    简单工厂 <?php # 简单工厂 abstract class mycoach { public function __construct(){} } class cultivatecpc e ...

  5. Codeforces Round #586 (Div. 1 + Div. 2) D. Alex and Julian

    链接: https://codeforces.com/contest/1220/problem/D 题意: Boy Dima gave Julian a birthday present - set ...

  6. jQuery系列(二):jQuery的选择器

    css中的选择器有:

  7. Transformer的PyTorch实现--转载

    转载自 https://blog.csdn.net/stupid_3/article/details/83184691

  8. JAVA编程思想第二章答案

    欢迎访问我的CSDN博客查看https://mp.csdn.net/mdeditor/94797839# 有其他问题欢迎发送邮箱至hpzhangjunjiell@163.com 感谢

  9. java面试题,转载自http://www.cnblogs.com/nnngu/p/8471043.html#3914167

    Java面试题库及答案解析   1.面向对象编程(OOP)有哪些优点? 代码开发模块化,更易维护和修改. 代码复用. 增强代码的可靠性和灵活性. 增加代码的可理解性. 2.面向对象编程有哪些特性? 封 ...

  10. ./与sh区别

    1   ./需要执行权限,使用脚本文件中第一行#!指定的shell(解释器)来执行命令(譬如常见的/bin/bash),不指定系统会调用默认shell程序 2   sh不需要执行权限,是使用sh这个s ...