import time
import os
from appium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from swipe import swipeLeft #调用向左滑动的方法
import unittest PATH=lambda p:os.path.abspath(os.path.join(os.path.dirname(__file__),p)) class tChatAndroidTests(unittest.TestCase):
@classmethod
def setUpClass(self):
desired_caps={}
desired_caps['platformName']='Android'
desired_caps['platformVersion']='5.1'
desired_caps['deviceName']='ZTEC880U'
desired_caps['app']=PATH('F:\Tchat_kaifa_V3.0.12_456_TS49169.apk')
self.driver=webdriver.Remote('http://127.0.0.1:4723/wd/hub',desired_caps)#初始化
desired_caps['unicodeKeyboard']=True,#使用unicodeKeyboard的编码方式来发送字符串
desired_caps['resetKeyboard']=True#将键盘给隐藏起来 def test_login1(self):
time.sleep(2)
swipeLeft(self.driver)
swipeLeft(self.driver)
swipeLeft(self.driver)
time.sleep(2)
self.driver.get_screenshot_as_file('C:\\Users\\yangbo\\Desktop\\Tchat\\screenshot\\login1.png') #截图
self.driver.find_element_by_id("com.sinosun.tchats:id/welcome_btnstart").click() def test_login2(self):
time.sleep(2)
self.driver.find_element_by_id("com.sinosun.tchats:id/loginview_inputphone_textfield").click()
'''
account
'''
self.driver.find_element_by_id("com.sinosun.tchats:id/loginview_inputphone_textfield").send_keys("")
time.sleep(2)
'''
password
'''
self.driver.find_element_by_id("com.sinosun.tchats:id/loginview_inputpassword_textfield").send_keys("a123456")
time.sleep(2)
'''
login
'''
self.driver.find_element_by_id("com.sinosun.tchats:id/loginview_loginuser_button").click()
time.sleep(5)
self.driver.get_screenshot_as_file('C:\\Users\\yangbo\\Desktop\\Tchat\\screenshot\\login2.png') #截图
#self.driver.find_element_by_id("com.sinosun.tchats:id/myText").click()
'''
code
'''
# self.driver.find_element_by_id("com.sinosun.tchats:id/securityCode").send_keys("000000")
# time.sleep(2)
#self.driver.find_element_by_id("com.sinosun.tchats:id/next_btn").click()
time.sleep(10) @classmethod
def tearDownClass(self):
self.driver.quit() if __name__ == '__main__':
suite = unittest.TestLoader().loadTestsFromTestCase(tChatAndroidTests)
unittest.TextTestRunner(verbosity=2).run(suite)
#swipe的方法

def getSize(driver):
x = driver.get_window_size()['width']
y = driver.get_window_size()['height']
return (x, y) #屏幕向上滑动
def swipeUp(driver,t=1000):
l = getSize(driver)
x1 = int(l[0] * 0.5) #x坐标
y1 = int(l[1] * 0.75) #起始y坐标
y2 = int(l[1] * 0.25) #终点y坐标
driver.swipe(x1, y1, x1, y2,t) #屏幕向下滑动
def swipeDown(driver,t=1000):
l = getSize(driver)
x1 = int(l[0] * 0.5) #x坐标
y1 = int(l[1] * 0.25) #起始y坐标
y2 = int(l[1] * 0.75) #终点y坐标
driver.swipe(x1, y1, x1, y2,t)
#屏幕向左滑动
def swipeLeft(driver,t=1000):
l=getSize(driver)
x1=int(l[0]*0.75)
y1=int(l[1]*0.5)
x2=int(l[0]*0.05)
driver.swipe(x1,y1,x2,y1,t)
#屏幕向右滑动
def swipeRight(driver,t=1000):
l=getSize(driver)
x1=int(l[0]*0.05)
y1=int(l[1]*0.5)
x2=int(l[0]*0.75)
driver.swipe(x1,y1,x2,y1,t) '''
使用方法:
先导入方法,如果在同一个目录下,最好
例如使用左滑的方法:
from swipe import swipeLeft
直接调用:swipeLeft(driver)
即可
'''

appium===登陆应用的案例的更多相关文章

  1. Web开发模式【Mode I 和Mode II的介绍、应用案例】

    开发模式的介绍 在Web开发模式中,有两个主要的开发结构,称为模式一(Mode I)和模式二(Mode II) 首先我们来理清一些概念吧: DAO(Data Access Object):主要对数据的 ...

  2. 网页与APP中那些优美的登陆表单

    我从Dribbble收集了20个漂亮的登陆表单案例.希望你看后能从中受益,并对你以后的登陆表单设计有帮助.设计一个登陆表单是非常容易,但大多设计都很糟糕.毫无亮点.无论如何,这篇Dribbble案例集 ...

  3. Appium+python自动化(三十六)- 士兵突击许三多 - 多个appium服务启动,多个设备启动,多进程并发启动设备-并发测试 - 上(超详解)

    简介 前面课程只是启动了单个appium服务,只能控制单台设备.如果需要针对多台设备测试那么该如何处理?而且发现群里的小伙伴们也在时不时地在讨论这个问题,想知道怎么实现的,于是宏哥就决定写一片这样的文 ...

  4. unittest测试

    标签(空格分隔): unittest unittest介绍: python里面也有单元测试框架-unittest,相当于是一个python版的junit. 一.unittest简介 1.先导入unit ...

  5. HttpClient4.5简单使用

    一.HttpClient简介 HttpClient是一个客户端的HTTP通信实现库,它不是一个浏览器.关于HTTP协议,可以搜索相关的资料.它设计的目的是发送与接收HTTP报文.它不会执行嵌入在页面中 ...

  6. struts2 的自定义 拦截器

    Struts2的 拦截器: 对于拦截器,Struts2官方给出的 定义是: 拦截器是动态拦截Action调用的对象.它提供了一种机制,使开发者可以定义一段代码,在Action执行之前或者之后被调用执行 ...

  7. Web开发模式

    原文链接 开发模式的介绍(完善版) 在Web开发模式中,有两个主要的开发结构,称为模式一(Mode I)和模式二(Mode II). 首先我们来理清一些概念吧: DAO(Data Access Obj ...

  8. 前端开发—jQuery

    jquery简介 jQuery是一个轻量级的.兼容多浏览器的JavaScript库. jQuery使用户能够更方便地处理HTML Document.Events.实现动画效果.方便地进行Ajax交互, ...

  9. 6、SSH远程管理服务实战

    1.SSH基本概述 SSH是一个安全协议,在进行数据传输时,会对数据包进行加密处理,加密后在进行数据传输.确保了数据传输安全.那SSH服务主要功能有哪些呢? 1.提供远程连接服务器的服务. 2.对传输 ...

随机推荐

  1. matlab isfield

    isfield 函数功能:判断输入是否是结构体数组的域(成员). 调用格式: tf=isfield(S,'fieldname') 检查结构体S是否包含由fieldname指定的域,如果包含,返回逻辑1 ...

  2. poj1456——Supermarket

    Supermarket Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 14656   Accepted: 6656 Desc ...

  3. Oracle数据库表被锁定以及去除方式

    select t2.username, t2.sid, t2.serial#, t3.object_name, t2.OSUSER, t2.MACHINE, t2.PROGRAM, t2.LOGON_ ...

  4. POJ1228:Grandpa's Estate——题解

    http://poj.org/problem?id=1228 题目大意:给一个凸包,问是否为稳定凸包. ———————————————————————— 稳定凸包的概念为:我任意添加一个点都不能使这个 ...

  5. Educational Codeforces Round 50 (Rated for Div. 2) C. Classy Numbers

    C. Classy Numbers 题目链接:https://codeforces.com/contest/1036/problem/C 题意: 给出n个询问,每个询问给出Li,Ri,问在这个闭区间中 ...

  6. Java中的字符串常量池?

    参考:http://droidyue.com/blog/2014/12/21/string-literal-pool-in-java/index.html

  7. linux-柔性数组

    柔性数组:在C99定义的结构体中,最后一个元素允许是未知大小(或者是0)的数组,它不占用结构体任何内存,这个数组叫做柔性数组,柔性数组前必须至少有一个其它成员. 使用方式: #include<s ...

  8. ASP.Net初级学习一(基本语句入门)

    <body > <form method="post" action="program.ashx"> <input type=&q ...

  9. 隐藏Nginx版本号

    一般来说,黑客攻击服务器的首要步骤就是收集信息,比如说你的软件版本,这些将成为下一步有针对性攻击的依据.所以说一定程度的隐藏这些信息就显得非常有必要了,本文将简单介绍如何在网络上隐藏Nginx版本号以 ...

  10. ZooKeeper内部构件

    引言 这个文档包含关于ZK内部工作的信息.目前为止,它讨论了这些主题: 原子广播 日志 原子传播 ZK的核心是一个原子的通信系统,它使所有的服务端保持同步. 保证.属性和定义 通过使用ZooKeepe ...