技术标签: python123app
Appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生应用,web 应用和混合应用。由.net编写,环境搭建比较麻烦。主要包含Android开发环境、appium环境、python环境的搭建
下面介绍下Python3+appium在Windows下搭建Android应用环境:
一、Java环境jdk安装
1.下载jdk包,1.6至1.8都可。根据自己的系统选择对应版本(如不会,可轻易在百度找到JDK安装配置方法)
2.一路傻瓜式安装,注意安装路径不要有空格,不要有中文。jdk和jre不要放在一个文件夹下
3.设置三个环境变量,我的电脑>选择“属性”->“高级”->“环境变量”->“系统变量”->“新建”
JAVA_HOME----C:Program FilesJavajdk1.8.0_121” (根据自己安装路径填写)
CLASSPATH--- .;%JAVA_HOME%lib;%JAVA_HOME%libtools.jar;
PATH-----;%JAVA_HOME%bin;%JAVA_HOME%jrebin;
在path路径下加上面那两个,这里就不多说了
4.打开cmd验证是否安装成功,输入java -version,然后输入javac
能显示版本号和下面的帮助信息说明安装成功
三、android-sdk下载安装
sdk环境配置参考:http://www.cnblogs.com/puresoul/p/4597211.html
1.下载android-sdk,这个是做android测试和开发的必备环境,
2.解压后,里面有个SDK manager.exe双击打开
3.勾选你要下载的API版本和对应的android版本,后面模拟器会用到(不下载用其它模拟器也行,或者真机),然后坐等下载
四、android-sdk环境变量
1.在系统变量新建:ANDROID_HOME,对应变量值为:D:\androidsdk\android-sdk-windows(sdk安装路径)
2.path添加两个变量,将以下箭头所指的两个文件路径添加到path里
3.path里面添加D:\androidsdk\android-sdk-windows\tools和D:\androidsdk\android-sdk-windows\platform-tools
五、adb环境
1.因为adb是在D:\androidsdk\android-sdk-windows\platform-tools这个目录下的,所以上面添加了环境变量后,可以直接在cmd里面运行了。
2.在cmd输入adb可以查看对应版本号
六、连接手机
1.手机用数据线连电脑,如果安装了91助手或者360什么的可以先下载手机驱动,确认手机能连上
2.打开cmd输入:adb devices,当屏幕上出现一串字符,后面显示devices说明连接成功(出现其它的提示,得检查自己的环境了)
到这里android的测试开发环境已经装好了.
七、Python安装
2.下载Python安装包,选择2.7版本和3.6版本都可以
3.Python安装,双击傻瓜式安装(别安装在c盘哦)
4.小编的安装目录在d盘:D:\python
5.安装完成后,看下这个目录D:\python\Scripts,有没pip.exe和easy_install.exe(一般都有)
6.将D:\python和D:\python\Scripts,添加到环境变量path下
7.打开cmd输入python,出现版本号,然后输入print("hello world!")
验证环境是否搭建成功
1、appium工作原理
当我在Windows平台上,通过Python(python-client )编写了一个appium自动化脚本并执行,请求会首先到 appium.dum (Windows下的appium-Server),appium-Server通过解析,驱动Android设备来执行appium自动化脚本。
2、adb连接模拟器
别人有比较详细的教程,这里就不一一赘述了,直接贴上地址吧:智汇返佣https://www.kaifx.cn/broker/t...
这个步骤的时候,遇到了一个坑,cmd中输入adb devices验证是否连接成功的时候,报错:adb server version (31) doesn't match this client (36),原因是SDK的adb.exe版本与夜神模拟器中的不一致,把夜神模拟器安装目录下D:Program FilesNoxbin中的adb.exe删掉,把SDK的C:adt-bundle-windows-x86_64-20140702sdkplatform-tools目录下的adb.exe文件拷贝过来,就可以解决了!
2、appium-client(python)与appium-server创建连接
启动appium(即appium-desktop),如图即为启动成功
编写第一个Appium用例
代码实现:
复制代码
-- coding: utf-8 --
from appium import webdriver
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.expected_conditions import NoSuchElementException
import unittest, time, os
global driver
class LoginAndroidTests(unittest.TestCase):
def setUp(self):
#初始化测试平台
desired_caps={}
desired_caps['platformName']='Android'
desired_caps['platformVersion']='4.4.2'
desired_caps['deviceName']='UE1'
#老师平板
desired_caps['appPackage']='com.uet.teacherspad'
desired_caps['appActivity']='com.uet.teacherspad.activity.common.LauncherActivity'
#学生平板
desired_caps['appPackage']='com.uet.studentpad'
desired_caps['appActivity']='com.uet.studentpad.activity.LauncherActivity'
self.driver=webdriver.Remote("http://127.0.0.1:4723/wd/hub",desired_caps)
def test_login(self):
'''登录 '''
time.sleep(2)
#学生登录
self.driver.find_element(By.ID,'com.uet.studentpad:id/editTxt_login_username').clear()
self.driver.find_element(By.ID,'com.uet.studentpad:id/editTxt_login_username').send_keys('13732650301')
self.driver.find_element(By.ID,'com.uet.studentpad:id/editTxt_login_password').clear()
self.driver.find_element(By.ID,'com.uet.studentpad:id/editTxt_login_password').send_keys('123123')
self.driver.find_element(By.ID,'com.uet.studentpad:id/btn_login_login').click()
#老师登录
self.driver.find_element(By.ID,'com.uet.teacherspad:id/editTxt_login_username').clear()
self.driver.find_element(By.ID,'com.uet.teacherspad:id/editTxt_login_username').send_keys('13732650301')
self.driver.find_element(By.ID,'com.uet.teacherspad:id/editTxt_login_password').clear()
self.driver.find_element(By.ID,'com.uet.teacherspad:id/editTxt_login_password').send_keys('123123')
time.sleep(6)
self.driver.find_element(By.ID,'com.uet.teacherspad:id/btn_login_login').click()
time.sleep(3)
self.driver.find_element(By.NAME,u'课堂教学').click()
time.sleep(3)
self.driver.find_element(By.NAME,u'课堂练习').click()
time.sleep(3)
def tearDown(self):
self.driver.quit()
if name == '__main__':
unittest.main(verbosity=2)
文章浏览阅读198次。CDMA技术九问九答一、什么是CDMA技术CDMA直译为码分多址,是在数字通信技术的分支扩频通信的基础上发展起来的一种技术。所谓扩频,简单地说就是把频谱扩展。CDMA技术采用的是直接序列扩频方式,就是用具有噪声特性的载波以及比简单点到几点通信所需带宽宽得多的频带去传输相同的数据。同调频、调幅技术一样,直接序列扩频是一种调制技术,它采用一个码序列(高速)去调制原始数据信息(低速),这样调制后的信息就..._cdma有阴影效应吗
文章浏览阅读5k次,点赞10次,收藏42次。Scene text detection and recognition: recent advances and future trends文章目录摘要1、介绍2.场景文本检测与识别的最新进展2.1 场景文本检测相关工作2.2 场景文本识别相关工作2.3 端到端文本识别相关工作2.4 场景文本检测与识别的相关应用及产品3 基准数据集和评估协议3.1基准数据集3.2评估协议3.2.1文本检测算法的评估协议3.2.2 文本识别算法的评估协议4讨论5 结论摘要文本作为人类最具影响力的发明之一,在人类生_icdar 2003介绍
文章浏览阅读367次。ssm框架介绍SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。常作为数据源较简单的web项目的框架。1.8.1 Spring Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。 _学生考试报名系统的设计
文章浏览阅读151次。计算机应用基础教学计划.doc江 苏 省 职 业 学 校课 程 授 课 计 划 表(20132014学年 第 一 学期)课程名称 计算机应用基础 课程类别 公共基础课 专 业 非计算机应用专业 授课班级 13中专会计电算化1、2班 授课教师 学 校 教学大纲(教学纲要)制定部门信息工程系教材全称(编者、出版单位、出版时间、版次)计算机应用基础 马成荣编写 凤凰出版传媒集团江苏科学技术出版社主要教学..._项目4-6分析商品业绩说课
文章浏览阅读1.4k次。一、客户端输入脚本执行的过程是对数据变量进行处理的过程,之前在脚本中处理的数据都是静态数据,而不是和客户端交互的动态数据。在大多数情况下脚本执行过程需要和客户端进行交互,用来获得脚本处理的数据,这些数据包括参数和命令行选项等等。下面的内容是采用不同的方式从客户端获取数据。12.1命令行参数向脚本传递参数的基本方式是命令行参数,命令行参数是在运行命令时同时传递的参数,如下方式:bash67.sh ..._操作系统实验 linux要求运行参数采用命令 行参数的方式从命令中获取。
文章浏览阅读913次。质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。一、判断一个数是否为素数:基于定义def is_prime(num):if num ..._python定义一个判断素数的函数isprime(n)利用该函数输出100以内的所有素数
文章浏览阅读5.6k次,点赞3次,收藏24次。前言今天摸索着搭建Vulhub靶场,参考网上资料,自己在Ubuntu、CentOS中屡屡失败。但是基本的安装流程我已经熟悉了。安装Docker 启动Docker 安装pip 安装docker-compose 下载Vulhub 切换目录,生成靶场 正文根据上面的流程,我打算在Kali上再次尝试搭建。sudo apt install docker.io ..._vulh
文章浏览阅读7k次,点赞2次,收藏2次。问题原因:springboot创建临时文件找不到对应的目录解决办法:1. 重新指定临时文件位置 java -Djava.io.tempdir=D:/tmpdir -jar -my_project.jar 2. 手动创建指定文件夹 3.启动类中加入配置临时文件目录 1 2 3 4 5 6 7..._org.springframework.boot.web.server.webserverexception: unable to create tem
文章浏览阅读5.3k次。二阶注入简介注入分类:SQL注入一般分为两类:一阶SQL注入(普通SQL注入),二阶SQL注入什么是二阶注入?二阶注入就是无法直接注入,它时指已存储(数据库、文件)的用户输入被读取后再次进入到 SQL 查询语句中导致的注入。注入原理注入比较:一阶SQL注入: 1;一阶SQL注入发生在一个HTTP请求和响应中,对系统的攻击是立即执行的; ..._二阶sql注入
文章浏览阅读1.1k次。原标题:HTML 基本语法 方便刚开始学习html的朋友1.1一般标记一般标记是由一个起始标记(Opening Tag)和一个结束标记(Ending Tag)所组成,其语法为:受控文字其中,x代表标记名称。和就如同一组开关:起始标记为开启(ON)的某种功能,而结束标记(通常为起始标记加上一个斜线/)为关(OFF)功能,受控制的文字信息便放在两标记之间。例如:这是斜体字。标记之中还可以附加一些属性(..._html 标记的开始标记称为
文章浏览阅读1.8w次,点赞21次,收藏161次。1.题目某单位申请了一-段IP地址: 200.23.16.0/23。 单位内由4个部门J(A,B,C,D)组成,每个部门的主机数量分别是: 200(A), 100(B), 50(C), 40(D)。试将单位的总地址块200.23.16.0/23划分为4个子网分配各4个部门。◆1.写出每个子网(地址块)◆2. 每个子网的网络 前缀?子网掩码?◆3.每个子网的广播地址?主机可用地址范..._cidr计算题
文章浏览阅读3.2k次。yum downloadonly_yum install --downloadonly