2018-09-05 17:53:24 hm372788571 阅读数 2124
  • python全栈自动化测试从入门到高手

    简介:本课程由python语言驱动,适合有一年以上功能测试经验的测试工程师学习。 课程主要内容: 1) python编程基础(语法基础、数据类型、面向对象、单元测试等) 2) API自动化框架搭建和应用(requests+ddt+unittest+jenkins) 3) WEB自动化框架搭建和应用(selenium+PO+pytest+allure+jenkins) 4) APP自动化框架搭建和应用(appium+pytest+allure+jenkins) 5) RobotFramework框架语法和实战(seleniumLibrary,利用python扩展robot等)。

    34 人正在学习 去看看 刘伶华

一、需要安装或配置的清单:
1.java JDK
2.Xcode
3.eclips (根据个人习惯,选择java开发工具)
4.appium desktop
5.homebrew
6.node
7.npm
8.libimobiledevice
9.carthage
10.ios-deploy
11.xcpretty
12.appium-doctor (可有可无)

二、本次安装的环境
1.macOS:10.13.6
2.appium desktop: 1.6.3
3.Xcode: 9.4.1
4.java JDK: 1.8.0_181
5.java-client: 6.1.0

三、安装步骤,在安装前最好是先链接vpn,国内的防火墙,你懂的。
1.安装java Jdk
a.下载jdk 这里提供一个官网地址Java下载地址
2.安装好java后,安装Xcode,
a.xcode直接在AppStore下载安装即可。
如果安装完Xcode后使用appium-doctor命令还是提示未安装Xcode时,运行xcode-select -p命令看打印出来的路径是不是/Applications/Xcode.app/Contents/Developer 如果不是这个路径,那就执行下面的命令sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
在运行下appium-doctor就会显示Xcode已安装了
3.安装eclipse
a.下载地址 eclipse下载
b.安装eclipse
选择这个
4.安装appium-desktop
a.下载地址github下载地址, csdn下载地址
b.安装appium desktop,将appium拖入applications,就完成安装了。
这里写图片描述
5.安装homebrew
a.打开终端,在终端输入
(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)
这里写图片描述

6.安装node
a.在终端输入:brew install node
7.安装npm
a.在终端输入:brew install npm
8.安装libimobiledevice
a.在终端输入:brew install libimobiledevice --HEA
9.安装carthage
a.在终端输入:brew install carthage
在这里插入图片描述
10.安装ios-deploy
a.在终端输入:brew install ios-deploy
用npm install -g ios-deploy安装时报错了,后面用brew安装就ok了在这里插入图片描述
11.安装xcpretty
a.在终端输入:gem install xcpretty
b.如果提示You don’t have write permissions,在前面加上sudo,然后会提示输入电脑的登陆秘密。
在这里插入图片描述
12.安装appium-doctor
a.在终端输入:npm install -g appium-doctor
b.安装成功后,可以使用appium-doctor --ios 检查appium的ios环境有没有安装成功。
13.WebDriverAgent配置
a.WebDriverAgent地址:
/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent
b.打开WebDriverAgent.xcodeproj文件
这里写图片描述
c.按以下配置操作
第一步
第二步
第三步
第四步
第五步
第六步
d.将WebDriverAgent安装到手机上
A.在终端跳转到WebDriverAgent的目录下,WebDriverAgent目录见上面的a步骤有
B.在终端输入
xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination ‘id=测试机的udid’ test

这里写图片描述
C.去描述文件信任就可以了。
至此环境已经安装完成了。
四、在eclipse中创建一个maven项目
a.在pom中配置java-client

<dependency>
	<groupId>io.appium</groupId>
	<artifactId>java-client</artifactId>
	<version>6.1.0</version>
</dependency>

b.appium初始化
public class AppTest 

{
private static AppiumDriver driver;

public static void main(String[] args) throws MalformedURLException {
	
	DesiredCapabilities	capabilities = new DesiredCapabilities();
	capabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "iphone 6s Plus");
	capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "iostest");
	capabilities.setCapability("udid", "测试机id");
	//capabilities.setCapability("app", "/Users/hem/ShareSDKDemo.ipa");
	capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "10.3.1");
	capabilities.setCapability("bundleId", "com.mob.product.ShareSDK");
	capabilities.setCapability("sessionOverride", false);
	capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, AutomationName.IOS_XCUI_TEST);
	driver = new IOSDriver<MobileElement>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
	driver.manage().timeouts().implicitlyWait(180,TimeUnit.SECONDS);	
	driver.findElementById("微信好友").click();
	//System.out.println(driver.findElement(By.xpath("//XCUIElementTypeStaticText[@name=\"微信好友\"] ")).getText()+"------");
	try {
		Thread.sleep(10000);
	} catch (InterruptedException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	//XCUIElementTypeStaticText[@name="微信好友"]    	shareMenuIcon
	driver.quit();
}

}

来补一下踩的坑。
之前按网上说的要去github下载一个最新的WebDriverAgent,替换掉appium自带的WebDriverAgent。
当我下载好以后,配置好了替换掉appium自带的WebDriverAgent,结果运行不了。报错。下面为报错log
eclipse log
Exception in thread “main” org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. Original error: Unhandled endpoint: /session/F885DA2F-2CFF-43CE-A609-5F6F8EA22505/wda/screen – http://localhost:8100/ with parameters {
wildcards = (
“session/F885DA2F-2CFF-43CE-A609-5F6F8EA22505/wda/screen”
);
}
Build info: version: ‘3.12.0’, revision: ‘7c6e0b3’, time: ‘2018-05-08T14:04:26.12Z’
System info: host: ‘youuzdeMac-mini.local’, ip: ‘192.168.110.5’, os.name: ‘Mac OS X’, os.arch: ‘x86_64’, os.version: ‘10.13.6’, java.version: ‘1.8.0_181’
Driver info: io.appium.java_client.ios.IOSDriver
Capabilities {app: /Users/hem/ShareSDKDemo.ipa, automationName: XCuiTest, browserName: , databaseEnabled: false, deviceName: iostest, javascriptEnabled: true, locationContextEnabled: false, networkConnectionEnabled: false, platform: MAC, platformName: iOS, platformVersion: 10.3.1, sessionOverride: true, takesScreenshot: true, udid: 71b53307f6b547a37d6e2041443…, webStorageEnabled: false}
Session ID: 0c34de1d-e5a2-4e07-8895-300a2652500f
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.openqa.selenium.remote.http.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:187)
at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:122)
at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:49)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:231)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:543)
at io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:46)
at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1)
at io.appium.java_client.ios.IOSDriver.execute(IOSDriver.java:1)
at io.appium.java_client.HasSessionDetails.getSessionDetails(HasSessionDetails.java:39)
at io.appium.java_client.HasSessionDetails.getSessionDetail(HasSessionDetails.java:56)
at io.appium.java_client.HasSessionDetails.getPlatformName(HasSessionDetails.java:65)
at io.appium.java_client.internal.JsonToMobileElementConverter.(JsonToMobileElementConverter.java:49)
at io.appium.java_client.AppiumDriver.(AppiumDriver.java:89)
at io.appium.java_client.AppiumDriver.(AppiumDriver.java:94)
at io.appium.java_client.ios.IOSDriver.(IOSDriver.java:95)
at gameAPI.appium.AppTest.main(AppTest.java:34)

找了半天资料没找到解决办法。还去github问了一下,给github提的问题
按他回复的处理后还是不行。

最后实在解决不了啦,心累。。。。。
最后在testhome里面找到了一个哥们遇到了和我一样的问题。
呀!那个链接找不到了。
解决方法就是,使用appium自带的WebDriverAgent。
问题就解决了。。。。
由于对mac系统不是很熟,Xcode也不熟。所以打这个ios的环境有点费劲。
Android相对来说简单的多。后面在补一个mac下搭建appium的android环境。

2014-10-28 17:27:32 max229max 阅读数 8552
  • python全栈自动化测试从入门到高手

    简介:本课程由python语言驱动,适合有一年以上功能测试经验的测试工程师学习。 课程主要内容: 1) python编程基础(语法基础、数据类型、面向对象、单元测试等) 2) API自动化框架搭建和应用(requests+ddt+unittest+jenkins) 3) WEB自动化框架搭建和应用(selenium+PO+pytest+allure+jenkins) 4) APP自动化框架搭建和应用(appium+pytest+allure+jenkins) 5) RobotFramework框架语法和实战(seleniumLibrary,利用python扩展robot等)。

    34 人正在学习 去看看 刘伶华

 Appium - iOS 各种问题汇总

作者: Max.Bai

时间: 2014/10



Appium - iOS 各种问题汇总


 1. Appium 滑动:

 swipe 有三种方式:
 第一种:swipe

JavascriptExecutor js = (JavascriptExecutor) driver;
WebElement  element = driver.findElementByXPath("xpath");
HashMap<String, Double> swipeObject = new HashMap<String, Double>();
swipeObject.put("startX", startX);
swipeObject.put("startY", startY);
swipeObject.put("endX", endX);
swipebject.put("endY", endY);
swipeObject.put("duration", duration);
swipeObject.put("element", Double.valueOf(((RemoteWebElement) element).getId()));
js.executeScript("mobile: swipe", swipeObject);



X,Y可为coordinator,也可以是percent,大于1 为coordinator, 小于1 为percent,比如0.5 代表50%

duration单位为秒, Android 可以设置0.1-60,iOS设置0.5-60

需要滑动特定的对象时需要指定的element,只是在名目上滑动式就可以不指定element

第二种: flick 区别swipe是没有duration

JavascriptExecutor js = (JavascriptExecutor) driver;
WebElement  element = driver.findElementByXPath("xpath");
HashMap<String, Double> flickObject = new HashMap<String, Double>();
flickObject.put("startX", 0.8);
flickObject.put("startY", 0.5);
flickObject.put("endX", 0.2);
flickObject.put("endY", 0.5);
flickObject.put("element", Double.valueOf(((RemoteWebElement) element).getId()));
js.executeScript("mobile: flick", flickObject);

第三种: scroll only for iOS scrollViewscroll方向滑动:

JavascriptExecutor js = (JavascriptExecutor) _driver;
HashMap<String, String> scrollObject = new HashMap<String, String>();
scrollObject.put("direction", sDrection);        
js.executeScript("mobile: scroll", scrollObject);

方向接受参数:Right, Left, Up, Down

重要:方向和我们认为的方向相反,比如要向下滑,就用Up,应为Up的意思是滑动到手机的顶部,左右也是一样,左滑就是Right

scroll对象滑动:

JavascriptExecutor js = (JavascriptExecutor) driver;
WebElement  element = driver.findElementByXPath("scrollview中元素的xpath");
HashMap<String, String> scrollObject = new HashMap<String, String>();
scrollObject.put("element", ((RemoteWebElement) element).getId());
js.executeScript("mobile: scroll", scrollObject);


2. 隐藏键盘hideKeyboard()

为了避免输入框输入内容后键盘遮挡控件,需要对键盘隐藏
Android可以设置如下cap来输入中文,同时能达到隐藏键盘的效果,但是这个设置只能针对Android。

capabilities.setCapability("unicodeKeyboard", true);
capabilities.setCapability("resetKeyboard", true);


iOS 就必须掉用方法hideKeyboard()
默认是点非输入框的地方键盘自动隐藏,如果不生效(开发没有做这个效果),就需要使用其他方法,比如:通过点击“Done”来隐藏键盘
hideKeyboard(HideKeyboardStrategy.PRESS_KEY, "Done");


3. Xcode 版本

Appium 1.2.* 对应Xcode5.0
Appium 1.3  对应Xcode6.0
可能出现错误:
Error: Could not find Automation.tracetemplate
Error: Could not find ios simulator binary at /application/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator


mac 版本更换命令,修改成自己版本对应的路径就好了:

sudo xcode-select -switch /Applications/Xcode-4.6.app/Contents/Developer/


4. Sendkeys vs setValue

Sendkeys iOS无法输入
可以试用setvalue代替

((MobileElement)_driver.findElement(by)).setValue(sText);



5. isAppInstalled/removeApp/installApp

isAppInstalled这个方法在Android里面可以使用(模拟器和真机都试过)
但是在iOS里面使用模拟器返回值总是false,没有错误信息,后来查看源代码发现
cb(new Error("You can not call isInstalled for the iOS simulator!"));
同样removeApp/installApp 都是

6. App path 设置

官网说可以用remote URL设置cap 的app
官网说明如下:
app    The absolute local path or remote http URL to an .ipa or .apk file, or a .zip containing one of these. Appium will attempt to install this app binary on the appropriate device first. e.g.: /abs/path/to/my.apk or http://myapp.com/app.ipa
我为了方便集中管理安装程序所以使用了http://sssss/x.zip
坑爹的问题来了,Android根本就不支持,报错找不到提供的app
iOS 还好,可以安装,但是测试中发现好多控件和放在本地完全不是一个效果。。。
所以还是老老实实的使用本地设置吧
ps: 貌似1.3解决了Android http 的问题,还没有验证

7. sudo安装Appium后无法启动

sudo npm install -g appium后果
Appium will not work if used or installed with sudo
网上有高人解决了这个问题
过程如下:
步骤1. 改变node的所有者

cd /usr/local/lib
sudo chown -R bixiaopeng node_modules

步骤2. 卸载appium

npm uninstall appium -g

步骤3. 重新安装appium

npm install -g appium
步骤4. 启动

appium
原链接:http://blog.csdn.net/wirelessqa/article/details/29188665


8. App or IPA ?

刚开始都想基于开始测试,发现怎么都是不行,不管App,和ipa格式的,现在我总结了一下分享给大家。

不管app的还是ipa的都要区分模拟器版本和真机版本

对于模拟器的,app的Appium不用解压,直接安装,ipa的Appium会解压找出app然后安装,问题来了,Appium用的解压工具是unzip,如果你的ipa里面包含中文的文件名,估计要出问题了,这个是unzip的老问题,网上有方案,不在这里说了,最简单的就是使用app的包,不用解压。

对于真机的,目前还没有测试,后续有问题会更新。



2016-11-01 16:11:12 clean_water 阅读数 2904
  • python全栈自动化测试从入门到高手

    简介:本课程由python语言驱动,适合有一年以上功能测试经验的测试工程师学习。 课程主要内容: 1) python编程基础(语法基础、数据类型、面向对象、单元测试等) 2) API自动化框架搭建和应用(requests+ddt+unittest+jenkins) 3) WEB自动化框架搭建和应用(selenium+PO+pytest+allure+jenkins) 4) APP自动化框架搭建和应用(appium+pytest+allure+jenkins) 5) RobotFramework框架语法和实战(seleniumLibrary,利用python扩展robot等)。

    34 人正在学习 去看看 刘伶华

AppiumIOS第一个demo

接第一篇:AppiumiOS环境搭建

http://blog.csdn.net/clean_water/article/details/52946191

这个实例继承了unittest,重写了它的setUp()tearDown()

共四个方法,包含两个用例方法:

1.setUp()重写的unittest方法,每一条用例执行最初被调用,一般这里会写获得driver的方法,供用例使用。这里写了获得appiumdriver的方法。

2.tearDown()重写的unittest方法,每一条用例执行最后被调用,一般这里写driver销毁的方法。这里写了pass,代表什么都不做,很多时候用例顺序执行,tearDown确实不需要做什么。

3.test_case1_1第一个用例,实现登录功能。注意--注意--注意:它最初会调用setUp、最后会调用tearDown,这是unittest的潜规则。

4.test_case1_2第二个用例,实现退出功能。注意--注意--注意:它最初会调用setUp、最后会调用tearDown,这是unittest的潜规则。

 

注意:用例执行顺序根据名称排序,此处先执行test_case1_1,再执行test_case1_2,每个用例执行最初会调用setUp(),执行最后会调用tearDown(),这是unittest的潜规则。

 

实例代码:

===================================================

 # -*- coding: UTF-8 -*-
import unittest
from appium import webdriver
 
class LoginIOSTests(unittest.TestCase):
 
    # 重写unittest的setUp方法,连接appium,包含了设备参数
    def setUp(self):
 
        self.driver = webdriver.Remote(
            command_executor='http://127.0.0.1:4723/wd/hub',
            desired_capabilities={
                'deviceName': '',
                'platformName': 'iOS',
                'app': 'com.cmcc.hbb.iphone.teachers.test'
            })
    # 重写unittest的tearDown,里边什么都不做
    def tearDown(self):
        pass
        
    def test_case1_1(self):
        
        # 输入用户名
        self.find_element('XPATH',"//UIAApplication[1]/UIAWindow[1]/UIATextField[1]").clear()
        self.find_element('XPATH',"//UIAApplication[1]/UIAWindow[1]/UIATextField[1]").send_keys("17799999999")
        # 输入密码
        self.find_element('XPATH',"//UIAApplication[1]/UIAWindow[1]/UIASecureTextField[1]").clear()
        self.find_element('XPATH',"//UIAApplication[1]/UIAWindow[1]/UIASecureTextField[1]").send_keys("999999")
        # 点击登陆
        self.find_element('NAME',u"登录").click()
        # 如果能找到这个元素,则登陆成功
        self.assertIsNotNone(self.find_element('NAME', u"班级圈"))
        
    def test_case1_2(self):
        # 点击退出
        self.find_element('NAME', u"退出").click()
        # 如果能找到登陆页面的'登陆'元素,则退出成功
        self.assertIsNotNone(self.find_element('NAME', u"登录"))
 

------------------------------------------------------------------------------------------------------------------------------------

更多请关注:FlyTester,关注技术的测试者

QQ群:456850134

web站:www.flytester.org

微信扫描二维码关注:



2017-10-10 14:00:08 jianglili611 阅读数 1059
  • python全栈自动化测试从入门到高手

    简介:本课程由python语言驱动,适合有一年以上功能测试经验的测试工程师学习。 课程主要内容: 1) python编程基础(语法基础、数据类型、面向对象、单元测试等) 2) API自动化框架搭建和应用(requests+ddt+unittest+jenkins) 3) WEB自动化框架搭建和应用(selenium+PO+pytest+allure+jenkins) 4) APP自动化框架搭建和应用(appium+pytest+allure+jenkins) 5) RobotFramework框架语法和实战(seleniumLibrary,利用python扩展robot等)。

    34 人正在学习 去看看 刘伶华

一、iOS安装条件 
需要建立设定的移动平台运行APPium测试。如以下的平台信息: 
Mac OS 10.12.6
Xcode 9
Apple开发工具(IPhone simulator SDK,command line tools)。

二、Appium在OS X中安装 
Appium一定要在OX中运行才能Run测试,所有先搭建OS X的环境(有苹果机,忽略)

1、安装或升级Xcode和iOS SDK(s) 
2、安装或者升级Xcode command Line Tools :还需安装Xcode command Line Tools
3、安装Appium 1.7.1 or above with Xcode 9:

本人使用  Desktop App Download (link) 安装。下载文件,把appium-desktop-1.2.3.dmg打开,然后再弹出的窗口中将其拖拽到右侧的Applications中就开始安装。安装成功后,检查是否有应用Appium

appium desktop 用法:
http://www.jianshu.com/p/bf1ca3d4ac76
http://www.jianshu.com/p/e95fac0c0851

4. 安装brew (link)

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
拷贝到Mac terminal后,回车安装(重要节点高亮显示)

验证brew安装成功:  brew help

5. 安装pip

sudo easy_install pip

6. OS X 安装和启动 RIDE
需要先安装好wxPython,RobotFramework。因为OS X自带有Python2.7,所以不需要再安装Python了。
brew install python

第一步:下载并安装wxPython

You need to install wxPython 2.8.12.1 with unicode support to run RIDE.
https://sourceforge.net/projects/wxpython/files/wxPython/2.8.12.1/, 下载安装.dmg 文件

http://blog.csdn.net/xubeiqiannian/article/details/51547635(安装wxpython 出现问题的解决方法)

第二步:下载并安装RobotFramework
sudo pip install robotframework,当然前提条件是安装好了pip工具。(我选择用pip安装)

第三步:下载并安装RIDE了

sudo pip install robotframework-ride

第四步:运行RIDE

在OS X中需要打开终端,然后输入指令sudo ride.py并回车,如果没有问题,就可以看到类似于Windows中的RIDE了,如果出现这个错误:run ride.py will got error: “python should be executed in 32-bit mode to support wxPython on mac. Check BUILD.rest for details",这是因为OS X是64位的操作系统,Python需要在32位模式下支持wxPython。解决方案是run: "defaults write com.apple.versioner.python Prefer-32-Bit -bool yes",就是把双引号内的语句在终端中运行下,之后再次执行ride.py

7. 安装 the RF Appium library:

sudo pip install robotframework-appiumlibrary --user

8. 安装 carthage and its dependencies:  (carthage 用来管理iOS 依赖库)

brew install carthage

9. 安装 libimobiledevice(libimobiledevice又称libiphone,是一个开源包,可以让Linux支持连接iPhone/iPod Touch等iOS设备)

 brew install libimobiledevice --HEAD

brew install node

npm install -g ios-deploy

10. 配置WebDriverAgentRunner, 上面的步骤已经安装好了WebDriverAgentRunner, 大家只需要去(/Applications/Appium.app/Contents/Resources/app/node_modules/appium/node_modules/appium-xcuitest-driver/)打开WebDriverAgent配置

WebDriverAgentRunner ->Product bundle Identifier,我设置为QA.AppiumAgentRunner. 同时设置下Signing






2018-08-13 17:40:11 fanaw 阅读数 425
  • python全栈自动化测试从入门到高手

    简介:本课程由python语言驱动,适合有一年以上功能测试经验的测试工程师学习。 课程主要内容: 1) python编程基础(语法基础、数据类型、面向对象、单元测试等) 2) API自动化框架搭建和应用(requests+ddt+unittest+jenkins) 3) WEB自动化框架搭建和应用(selenium+PO+pytest+allure+jenkins) 4) APP自动化框架搭建和应用(appium+pytest+allure+jenkins) 5) RobotFramework框架语法和实战(seleniumLibrary,利用python扩展robot等)。

    34 人正在学习 去看看 刘伶华

目录

一:appium ios 搭建 

二:iOS 查看元素方式

三:IOS 常用终端命令



一:appium ios 搭建 

 参考地址:https://github.com/appium/appium-xcuitest-driver

温馨提示:

以下安装不要在root用户下安装。若出现权限问题,进入root用户将文件权限更改下。然后退出root用户继续安装即可

1、有一个MAC机器,或者虚拟机,能够联网,要求Xcode8+ MAC系统10.11+(我用的是Xcode8.2 , MAC系统10.12)有一个Apple ID账号

2、安装brew  

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

3、安装libimobiledevice

brew install libimobiledevice --HEAD

4、安装carthage

brew install carthage

5、安装node(目的是安装npm)按照官方的地址https://nodejs.org/en/download/。 下载.pkg文件安装

6、安装cnpm(由于某种原因,直接用npm下载安装会有好多网络问题,安装淘宝的cnpm要比npm好用) https://npm.taobao.org/

npm install -g cnpm --registry=https://registry.npm.taobao.org

7、安装ios-deploy

cnpm install -g ios-deploy

8、安装xcpretty 如果安装出错,切换个目录再试试

gem install xcpretty

9、安装appium1.8.0(到发帖为止,最新版本是1.8.0,要其他版本的跟上版本号就行了)这一步骤若出现安装jDK弹出框忽略就好

cnpm install -g appium@1.8.0

 

二:iOS 查看元素方式

第一种:使用appium 自带的框架,appium  inspector 

 appium inspector 底层使用的XCUITest 来识别页面元素

1、需要把WDA 即WebDriverAgentRunner 安装到虚拟机或真机中,借助WebDriverAgentRunner的驱动来识别元素

2、需要进入WebDriverAgentRunner目录:一般是/usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent

cd  /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent (如果WebDriverAgent 所在路径和此不同,请自行查找)

3、看下有没有这个目录 Resources/WebDriverAgent.bundle,没有的话就需要创建

mkdir -p Resources/WebDriverAgent.bundle

4、下载相关依赖 

sh ./Scripts/bootstrap.sh -d

5、用xcode运行WebDriverAgent修改包名,即重签名,然后运行到手机端

 参考详细链接:https://www.cnblogs.com/baconLiu/p/6861431.html

                            https://blog.csdn.net/leorx01/article/details/79169423

第二种方式:使用macaca 的XCTestWD 来识别元素

与上基本类似

1、同样需要运行xctestwd至真机或模拟器,先进入目录

2、xcode 重新签名,

3、运行到真机或模拟器

官方使用文档介绍的很详细:https://macacajs.github.io/zh/inspector

 

三:IOS 常用终端命令

lsof -i :5678 查看端口占用的进程

kill -s 9 40036 结束的该进程

ios 的终端命令一般使用第三方的开源库工具,下面介绍两种:libimobiledevice、ios-deploy

libimobiledevice

libimobiledevice 是一个跨平台的软件库,支持 iPhone®, iPod Touch®, iPad® and Apple TV® 等设备的通讯协议。不依赖任何已有的私有库,不需要越狱。应用软件可以通过这个开发包轻松访问设备的文件系统、获取设备信息,备份和恢复设备,管理 SpringBoard 图标,管理已安装应用,获取通讯录、日程、备注和书签等信息,使用 libgpod 同步音乐和视频。

安装方式

brew install --HEAD libimobiledevice # 安装最新的更新,支持 iOS 10 brew install ideviceinstaller # 仅在 iOS9工作

常用命令

1. 查看当前所连接的设备

idevice_id -l # 显示当前所连接的设备[udid],包括 usb、WiFi 连接 instruments -s devices # 列出设备包括模拟器、真机及 mac 电脑本身

2. 安装应用

xxx.ipa为应用在本地的路径

ideviceinstaller -u [udid] -i [xxx.ipa] # 给指定连接的设备安装应用

3. 卸载应用

bundleId为应用的包名

ideviceinstaller -u [udid] -U [bundleId] # 给指定连接的设备卸载应用

4. 查看设备已安装的应用

ideviceinstaller -u [udid] -l # 指定设备,查看安装的第三方应用 ideviceinstaller -u [udid] -l -o list_user # 指定设备,查看安装的第三方应用 ideviceinstaller -u [udid] -l -o list_system # 指定设备,查看安装的系统应用 ideviceinstaller -u [udid] -l -o list_all # 指定设备,查看安装的系统应用和第三方应用

5. 获取设备信息

ideviceinfo -u [udid] # 指定设备,获取设备信息 ideviceinfo -u [udid] -k DeviceName # 指定设备,获取设备名称:iPhone6s idevicename -u [udid] # 指定设备,获取设备名称:iPhone6s ideviceinfo -u [udid] -k ProductVersion # 指定设备,获取设备版本:10.3.1 ideviceinfo -u [udid] -k ProductType # 指定设备,获取设备类型:iPhone8,1 ideviceinfo -u [udid] -k ProductName # 指定设备,获取设备系统名称:iPhone OS

ios-deploy

ios-deploy 同样是一个安装和调试应用的命令行工具。0需要一个有效的开发者证书,已安装 Xcode 7以上的版本。

安装方式

  1. 安装 node (已安装可略过)

brew install node

  1. 安装ios-deploy

npm install -g ios-deploy

  1. 开发者证书安装,请找 iOS 开发吧。

常用命令

1. 查看当前所连接的设备

ios-deploy -c # 查看连接的设备包括:usb、wifi 连接 ios-deploy -c --no-wifi # 查看连接的设备(usb),忽略 WiFi 连接的

2. 安装应用

xxx.app为 Xcode 编译后的应用安装包路径

ios-deploy --id [udid] --bundle [xxx.app] # 给指定应用安装应用

3. 卸载应用

ios-deploy --id [udid] --uninstall_only --bundle_id [bundleId] # 给指定连接的设备卸载应用

4. 查看设备已安装的应用

  • ios-deploy --id [udid] --list_bundle_id # 指定设备安装的所有应用,包括系统应用和第三方应用 ios-deploy --id [udid] --exists --bundle_id # 指定设备检查指定应用是否已经安装

appium ios 隐藏键盘

阅读数 450

没有更多推荐了,返回首页