首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Appium中iOS环境搭建指南

前言 最近在搞iOS自动化环境基于Appium框架,Appium框架搭建iOS每当捡起来使用就各种坑,总结一下iOS自动化环境搭建问题,避免其他同学踩坑~ 搭建流程 苹果开发者证书 首先需要准备好苹果开发者账号...由其可见苹果对证书要求非常严格,必须在证书设备列表中的设备才能安装打包后的app。...个人免费开发者账号 先安利一下简书上有关申请个人免费开发者账号的贴子,传送门 总结内容: 1、注册apple账号 2、xcode中的Preferences添加apple账号 3、注册的账号默认是赋予个人免费开发者权限的...是一个命令行工具,主要用于管理iOS设备上应用程序的安装与卸载,以及查看相关信息,在appium中会使用到。...底层和 xcuitest 通信的工具,WDA 也是 iOS 项目,所以也需要编译。

1.7K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Appium+python自动化19-iOS模拟器(iOS Simulator)安装自家APP

    对于没有iPhone真机的小伙伴,想在iOS模拟器上安装app测试可不是那么容易的事情。...一、启动iOS Simulator 1.Xcode>Open Developer Tool>iOS Simulator,打开后在hardware里面选对应的iPhone版本就能启动模拟器了 ?...(别问我是怎么知道的,都是泪~~~) 2.以https://github.com/appium/sample-code.git 这里的一个.app包为例,在路径/sample-code/apps/TestApp...2.有以下几个方法都能安装到模拟器上: --运行脚本,会自动安装上去,参考:Appium+python自动化17-启动iOS模拟器APP源码案例 --通过指令安装,也就是这篇讲的 --通过appium...上的配置也能安装,下篇讲appium调试app时候定位元素 --要是会xcode,可以直接拿到拿到源码,用xcode直接运行上去

    2.1K30

    iOS---iOS中SQLite的使用

    一.SQLite的使用 采用SQLite数据库来存储数据。SQLite作为一中小型数据库,应用ios中,跟前三种保存方式相比,相对比较复杂一些。还是一步步来吧!...第一步:导入头文件 需要添加SQLite相关的库以及头文件:在项目文件的Build Phases下,找到Link Binary Library(ies),添加libsqlite3.0.dylib(libsqlite3....dylib与前者的区别暂时不知,两者应该差不多);在项目文件中头文件或者源文件中添加头文件#import "/usr/include/sqlite3.h" 第二步:开始使用SQLite: 1.打开数据库...所以要想正确从数据库中取出中文,需要用NSString来接收从数据库取出的字符串。...二.FMDB的使用 github地址是https://github.com/ccgus/fmdb // 继承 # pod 'FMDB/SQLCipher' 1.FMDB的创建: NSString

    1.4K80

    iOS中的继承

    概念 子类可以直接复用父类中的成员 子类继承父类所有方法的声明和实现 非私有的实例变量以及协议 继承时要在.h中声明一下 继承具有单根性和传递性 继承的根类:大多都继承自 NSObject 类,所以在定义一个类时...,减少代码冗余 OC中一个类可以继承另一个类 被继承的类称为父类或超类(基类) 继承的类称为子类或派生类 子类可以直接拥有父类中所有允许子类继承的属性和方法 继承关系是可以传递的,子类除了可以调用父类的方法...,也可以调用父类的父类的方法,也就是说继承可以确保某个父类型之下的所有类都会有父类型所持有的全部方法 子类可以有自己的成员变量、属性和方法 单一继承性,OC不支持多继承 继承中方法调用的流程: 首先到子类去找...适用继承的场合 父类只是给子类提供服务,并不涉及子类的业务逻辑 层级关系明显,功能划分清晰,父类和子类各做各的。...父类的所有变化,都需要在子类中体现,也就是说此时耦合已经成为需求 我们不能脱离cocoa框架开发,所以我们可以继承cocoa的类,以达到快速开发的目的,但是如果没有特殊原因我们写的代码要控制在继承链不超过两层

    17510

    iOS中的Block

    3、__main_block_impl_0中包含了俩个成员变量和一个构造函数,成员变量分别是__block_impl结构体和描述信息Desc,之后在构造函数中初始化block的类型信息和函数指针等信息。...4、__main_block_func_0函数,其实对应的block的函数体,该函数接受了一个__cself参数,其实就是对应的block本身 5、__main_block_desc_0结构体,其中比较有价值的信息是...block的大小 6、main函数对block的创建,可以看出执行block就是调用一个以block自身为参数的函数,这个函数对应着block的执行体。...NSConcreteStackBlock 保存在栈中的 block,当函数返回时会被销毁。 NSConcreteMallocBlock 保存在堆中的 block,当引用计数为 0 时会被销毁。...其内部通过函数memmove将栈中的block的内容拷贝到了堆中,并使isa指向了_NSConcreteMallocBlock。

    21310

    iOS中的Copy

    demo str = 0x109768080, copyStr = 0x109768080, mcopyStr = 0x600002ca52c0 结论: 1、copy和mutableCopy拷贝出来的对象中的内容和以前内容一致...= 0x60000397a370, copyStr = 0xc464b5846da8a473, mcopyStr = 0x60000397a880 结论: 1、copy和mutableCopy拷贝出来的对象中的内容和以前内容一致...2、可变的字符串通过copy操作,生成新的对象 3、可变的字符串通过mutableCopy操作,生成新的可变对象 copy的用途 property中使用的copy、strong修饰的区别 strong...log: 0x60000002cce0--iPhone--999 0x6000000371c0--iPhone--999 注:在- (id)copyWithZone:(NSZone *)zone方法中,...因为指针可能实际指向的是PersonModel的子类。这种情况下,通过调用[self class],就可以返回正确的类的类型对象。

    13910

    自动化-Appium-第一个Demo-原生(Python版)

    --->Project:--->Project Interpreter),确保Appium-Python-Client包已经被项目引用。...要想在IOS模拟器中运行应用,则必须在Xcode中编译时选择模拟器类型,编译生成的文件后缀为.app (2)如果是在真机上运行,需要装.ipa的应用程序文件。分为正式版和开发版。.../usr/bin/env python # -*- coding: utf-8 -*- from appium import webdriver import time """ IOS-原生-模拟器 "...要想在IOS模拟器中运行应用,则必须在Xcode中编译时选择模拟器类型,编译生成的文件后缀为.app (2)如果是在真机上运行,需要装.ipa的应用程序文件。分为正式版和开发版。.../usr/bin/env python # -*- coding: utf-8 -*- from appium import webdriver import time """ IOS-原生-真机 ""

    2.2K20

    iOS中的NSFileManager

    NSFileManager NSFileManager是用来管理文件系统管理的 它可以用来操作常见文件夹 NSFileManager常用方法 获取NSFileManager NSFileManager...fileExistsAtPath:@"/Users/soso/Desktop/demo1/NSFileManager/string.txt"]; 判断一个文件是否存在,且是否是一个文件夹 //该方法的返回值是说明传入的路径对应的文件或文件夹是否存在...//第二个参数是用于保存判断的结果,如果是一个目录,那么就是赋值为YES,若不是就是NO BOOL dir = NO; BOOL flag = [file fileExistsAtPath:@"/Users...,是否自动创建不存在的文件夹,如果是YES,要在该路径下创建Text,若路径中没有NSFileManager这个文件夹,系统会自动创建,若为NO,则不会创建成功 attributes:创建出来为文件夹的属性...error:是否创建成功 注意:该方法只能用于创建文件夹,不能用于创建文件,路径最后的test就是新创建的文件夹 */ BOOL flag = [file createDirectoryAtPath:

    40910

    iOS中的Category

    什么是Category 在OC中,扩展一个类的方式有两种:继承与分类 可以在不修改原来类的基础上,为这个类扩充一些方法 一个庞大的类可以分模块开发 Category的格式 通过Category给某类添加方法...Class-continuation类型的Category 它必须定义在其所接续的那个类的实现文件中 此分类可以声明属性,且此分类没有特定的是现实文件,其中方法都定义在主实现文件中 一般存放不需要对外公开的属性...在开发中,类的实现文件特别大,难于管理与维护,因此经常使用分类机制把类的实现代码划分成易于管理的小块,以便单独检视 #import @interface...因为Category中的@property,只会生成setter/getter的方法声明,不会生成实现及私有的成员变量(在.m文件(Class-continuation)中的分类可以声明属性,同时也可以生成...,程序只会调用分类里的方法,如果多个分类中都有和原类中同名的方法,程序只会由编译器决定,编译器最后一个执行的方法来响应 调用优先级(Category->本类->父类) #import <Foundation

    18110

    iOS中的Protocol

    Protocol基本概念 类似于java的接口interface,接口就是一堆方法的声明,没有实现,在OC中接口是由一个叫做协议的Protocol来实现 Protocol 语法格式 Protocol的定义...Protocol只有声明,没有实现 Category和Protocol都可以声明方法,不能声明属性 Protocol注意事项 Protocol可以用@property形式声明属性,只不过在Protocol中声明的属性...,只有对应的setter/getter方法声明,并没有生成对应的成员变量 Protocol: @protocol SportProtocol @property (nonatomic...Person @synthesize sportType=_sportType; - (void)readSportType{ NSLog(@"%@",_sportType); } @end 上面方法中主要用到了...,它是一个基协议 NSObject协议中声明最基本的方法(description、retain、release等等) 每个新协议都遵循NSObject #import <Foundation/Foundation.h

    21610

    iOS中的蓝牙

    iOS中的蓝牙 概述 iOS中提供了4个框架用于实现蓝牙连接 1.GameKit.framework(用法简单) 只能用于iOS设备之间的同个应用内连接,多用于游戏(eg.拳皇,棋牌类),从iOS7开始过期...2.MultipeerConnectivity.framework(代替1) 只能用于iOS设备之间的连接,从iOS7开始引入,主要用于非联网状态下,通过wifi或者蓝牙进行文件共享(仅限于沙盒的文件...可用于第三方蓝牙设备交互,但是蓝牙设备必须经过苹果MFi认证(国内很少) 4.CoreBluetooth.framework(时下热门) 可用于第三方蓝牙设备交互,必须要支持蓝牙4.0 硬件至少是4s,系统至少是iOS6...蓝牙4.0以低功耗著称,一般也叫BLE(Bluetooth Low Energy) 目前应用比较多的案例:运动手环,嵌入式设备,智能家居 设计到的系统/框架 HealthKit/物联网HomeKit/

    1.2K70

    iOS中的多态

    什么是多态 多态一般都要跟继承结合起来说,其本质是子类通过覆盖或重载父类的方法,来使得对同一类对象同一方法的调用产生不同的结果。...这里需要辨析的地方在:同一类对象指的是继承层级再上一层的对象,更加泛化。...程序中的多态:父类指针指向子类对象 多态的原理 动态绑定 动态类型能使程序直到执行时才确定对象的真实类型 动态类型绑定能使程序直到执行时才确定要对那个对象调用的方法 多态条件 有继承关系 子类重写父类方法...父类指针指向子类对象 程序中的表现 父类指针指向不同子类对象的时候,通过父类指针调用被重写的方法的时候,会执行该指针指向的那个对象的方法 应用场景 提高了代码的扩展性 多态优点 多态的主要好处是简化了编程接口...,他允许在类和类之间重用一些习惯性的命名,而不用为每一个新加的函数命名一个新名字,这样,编程接口就是一些抽象的行为集合,从而和实现接口的类区分开来 多态也使得代码可以分散在不同的对象中而不用试图在一个函数中考虑到所有可能的对象

    17310

    Appium+python自动化(二十四)- 白素贞千年等一回许仙 - 元素等待(超详解)

    实际测试过程中,比如点击一个控件需要启动一个新activiy界面,或需要加载弹框,或请求网络加载数据成功后刷新界面,此时需要等待一段时间,新界面出现了才能继续执行UI操作,否则还在加载中,程序已开始执行新界面操作的代码...python 的 time 包提供了休眠方法 sleep() , 导入 time包后就可以使用 sleep()进行脚本的执行过程进行休眠。...12 lambda 13 lambda 提供了一个运行时动态创建函数的方法。'''...等条件的使用,默认每500ms检查一次条件状态,可以及时将脚本从等待中唤醒,避免无效等待,在实际应用中推荐使用该方法。...(2)上一步已经获取当主页面的activity了,那就可以用wait_activity等它出现了,再做下一步的点击操作 ?

    1.3K30

    iOS 面向函数编程的理解

    函数编程的概念: 函数编程(简称FP)不只代指Haskell Scala等之类的语言,还表示一种编程思维,软件思考方式,也称面向函数编程。...最主要的特征是,函数是第一等公民。 强调将计算过程分解成可复用的函数,典型例子就是map方法和reduce方法组合而成 MapReduce 算法。 只有纯的、没有副作用的函数,才是合格的函数。...函数编程: 数据与函数是松耦合的 函数隐藏了它们的实现,语言的抽象是函数,以及将函数组合起来表达。 核心抽象模型是函数,不是数据结构 核心活动是编写新的函数。...: Scala, Haskell, Erlang,F#,Lisp等 iOS中函数编程的理解: OC:OC是一个面向对象的语言,用OC编程面向函数思想我觉得是有点生硬的。...比如下面的一个例子:       我们可用不同的函数拼接都让这个人走5步,每个函数的输出都能拼接到下一个函数。

    75020

    自动化-Appium-​第一个Demo-Web(Python版)

    --->Project:--->Project Interpreter),确保Appium-Python-Client包已经被项目引用。...脚本执行步骤: (1)打开模拟器默认浏览器,打开百度首页 (2)搜索框输入Appium (3)点击百度一下 (4)关闭模拟器默认浏览器 3、在执行测试脚本过程中,多多少少会遇到一些报错,排除元素定位不对的情况...脚本执行步骤: (1)打开真机里的Chrome浏览器,打开百度首页 (2)搜索框输入Appium (3)点击百度一下 (4)关闭真机里的Chrome浏览器 3、在执行测试脚本过程中,多多少少会遇到一些报错.../usr/bin/env python # -*- coding: utf-8 -*- from appium import webdriver import time """ IOS-Web-模拟器.../usr/bin/env python # -*- coding: utf-8 -*- from appium import webdriver import time """ IOS-Web-真机 "

    2.5K10
    领券