appium在mac上的配置
来源:互联网 发布:最新网络流行语段子 编辑:程序博客网 时间:2024/05/29 18:56
参考链接:安装appium:https://github.com/erduoniba/appium_ios_sample_code
1、下载或者更新Homebrew:homebrew官网 macOS 不可或缺的套件管理器
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" #下载$ brew update #更新$ brew -vHomebrew 1.1.5
2、使用homebrew来安装node.js : Node.js教程 node采用C++编写,是一个JavaScript的运行环境,因为JS是脚本语言需要一个解析器才能运行,对于写在HTML页面的JS,浏览器本身就是解析器,对于需要单独运行的JS,Node.js就是解析器。
$ brew install node$ node -vv7.3.0
3、安装npm: NPM 使用介绍 是一个NodeJS包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准。
$ brew install npm
$ npm -v4.1.2
4、使用npm来安装appium,2017/01/03目前最新的版本是 1.6.3
,当然也可以在 Macos下bitbucket下载appium客户端,但是坑人的是最新版本是 1.5.3
支持的还只是 iOS10
以下的 UIAutomation
框架基础上测试,而 iOS10
以后苹果使用的却是基于 XCUITest
,所以只能采用npm安装咯。但是因为国内墙太高而使用npm却是从国外服务器下载,有时候使用npm需要非常长的时间,更多时候是失败,推荐使用cnpm来安装:淘宝 NPM 镜像 10分钟同步npmjs.org镜像,使用方式和npm完全一致
$ npm install cnpm -g --registry=https://registry.npm.taobao.org
使用cnpm安装appium和appium-doctor:
$ cnpm install -g appium --no-cache$ cnpm install -g appium$ cnpm install -g appium-doctor
若网速较好并且代理正常的话可以直接使用npm install -g appium进行安装,并安装appium-doctor
appium -v
1.6.3
6、安装wd
npm install wd
7、检查appium环境检测:
$ appium-doctor
若展示Everything looks good, bye!则安装完成,若出错请根据提示进行配置,主要是全局配置文件上的问题修改.bash_profile文件
appium在ios10 真机上的使用:参考链接:http://blog.csdn.net/wuxuehong0306/article/details/54377957
另加步骤
- 1,有一个MAC机器,或者虚拟机,能够联网,要求Xcode8+ MAC系统10.11+(我用的是Xcode8.2 , MAC系统10.12)有一个Apple ID账号
- 2,安装brew(这一步已经在之前安装appium时已经完成)
usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
- 3,安装libimobiledevice
brew install libimobiledevice --HEAD
- 4,安装carthage(在appium-doctor中会有这一项目的检测,若没有安装会提示carthage was not found,通过以下方式安装)
brew install carthage
- 5,安装node(这一步已经在之前安装appium时已经完成)
- 6,安装cnpm(这一步已经在之前安装appium时已经完成)(由于某种原因,直接用npm下载安装会有好多网络问题,安装淘宝的cnpm要比npm好用) https://npm.taobao.org/
- 7,安装ios-deploy
cnpm install -g ios-deploy
- 8,安装xcpretty(可能会提示没有write权限,可以在指令前加上sudo 后执行)
gem install xcpretty
- 11,安装appium-xcuitest-driver依赖(针对ios10 以上的处理) 进入WebDriverAgent安装目录。运行bootstrap
cd /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgent (如果WebDriverAgent 所在路径和此不同,请自行查找)mkdir -p Resources/WebDriverAgent.bundlesh ./Scripts/bootstrap.sh -d
在运行sh ./Scripts/bootstrap.sh -d很可能会有因为某种原因而网络连接失败。方法就是去App store下载了一个VPN代理软件.
再次运行sh ./Scripts/bootstrap.sh -d 无报错就OK了(显示 -e Fetching dependencies)- 12,用Xcode打开WebDriverAgent,并且编译
进入WebDriverAgent 文件夹,可用如下方法
双击WebDriverAgent.xcodeproj打开此项目,这个项目由facebook开源 有兴趣的话可以研究https://github.com/facebook/WebDriverAgent/apple。在这里我们的目的就是更改一些配置,让他能够编译成功
编译WebDriverAgentLib
编译WebDriverAgentRunner
关于为什么要设置Deployment Target,苹果官方宣称XCUItest支持9.3.4以上。但实际经过我测试9.0以上是没问题的,但是如果不调低最小安装的ios版本,会面临着WebDriverAgentRunner无法安装到ios9.0的手机上去的,所以无法测试ios9。
若果编译的过程中有语法错误,应该是11步没有安装好
若编译出现,.h文件无法找到,可以尝试先用intellij idea执行测试代码,之后再用xcode编译一遍可以解决此问题
关闭Xcode,进入WebDriverAgent 文件夹
cd /usr/local/lib/node_modules/appium/node_modules/appium-xcuitest-driver/WebDriverAgentxcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination 'id=真机的udid' test
运行到最后会发现
而iphone多了一个WebDriverAgentRunner的app。手动启动那个app的时候
原因是我们手机并并没有信任这个apple id的开发者,到设置-通用-设备管理(描述文件) 信任你的apple id就可以了。再次运行上述命令,看到如下图,就成功了,- 14,运行appium
至此mac机器上关于ios10真机的配置已经完成appium -p 4723
- 导入所需要的jar包
selenium-server-standalone-3.0.0-beta3.jar(http://docs.seleniumhq.org/download/)
下载相应的jar后,复制到项目中,并点击右键选择add as library添加到项目中
- 相关代码
import io.appium.java_client.AppiumDriver;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.AndroidElement;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.io.File;
import java.net.URL;
import java.util.List;
public class AndroidContactsTest {
private AppiumDriver<AndroidElement> driver;
@Before
public void setUp() throws Exception {
// set up appium
File classpathRoot = new File(System.getProperty("user.dir"));
//android 相关代码
File appDir = new File(classpathRoot, "/src/test/java/apps/");//将官方apk放置到自己设置的文件夹下
File app = new File(appDir, "ContactManager.apk");//https://github.com/appium/sample-code/blob/master/sample-code/apps/ContactManager/ContactManager.apk 官方给出的测试apk
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName","SM-N9200");//设备名
capabilities.setCapability("platformVersion", "6.0.1");//设备android版本
capabilities.setCapability("app", app.getAbsolutePath());
//ios相关代码
File appDir = new File(System.getProperty("user.dir"), "/src/test/java/apps/");//将官方ipa放置到自己设置的文件夹下
File app = new File(appDir, "TestApp.app");//https://github.com/appium/sample-code/tree/master/sample-code/apps/TestApp 官方给出的测试用ios程序,笔者直接使用TestApp/build/release-iphonesimulator/TestApp.app文件无法正常使用,因此使用TestApp.xcodeproj自行编译后,采用了编译代码后的ipa包
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(MobileCapabilityType.PLATFORM_VERSION, "10.2");//测试真机的ios版本
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "iPhone");//测试真机的name,通过xcode查看
capabilities.setCapability(MobileCapabilityType.UDID, "8dbf13a9fd894edfcc537cfc89399b8f03754182");//设备的udid
capabilities.setCapability(MobileCapabilityType.APP, app.getAbsolutePath());
capabilities.setCapability("platformName", "iOS");
capabilities.setCapability(MobileCapabilityType.AUTOMATION_NAME, "XCUITest");//ios10需要使用xcuitest,进行处理
uiTestApp = new TestAppScreenSimple();
driver = new IOSDriver<MobileElement>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
System.out.println("driver ="+driver.getPageSource());
PageFactory.initElements(new AppiumFieldDecorator(driver), uiTestApp);
driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
}
@After
public void tearDown() throws Exception {
driver.quit();
}
@Test
public void addContact(){
WebElement el = driver.findElement(By.xpath(".//*[@text='Add Contact']"));
el.click();
List<AndroidElement> textFieldsList = driver.findElementsByClassName("android.widget.EditText");
textFieldsList.get(0).sendKeys("Some Name");
textFieldsList.get(2).sendKeys("Some@example.com");
driver.swipe(100, 500, 100, 100, 2);
driver.findElementByXPath(".//*[@text='Save']").click();
}
}
- appium在mac上的配置
- 在 Mac 上配置 Appium 问题收集
- appium搭建及要求---在 Mac 上配置 Appium
- appium在mac上的环境搭建
- appium在MAC上环境搭建
- appium在MAC上环境搭建
- appium在MAC上环境搭建
- (Android开发自测)在Mac OS 10.12 上安装配置appium
- 如何 在Mac OS X 上的 Appium 上 Run *.app 文件
- appium在mac下的安装
- Appium在Mac环境的搭建
- Appium在Mac上的环境检查以及iOS模拟器初级录制
- Nginx在Mac上的安装配置
- Appium 在 MAC 上搭建 appium1.6.3 过程
- Appium 在 MAC 上搭建 appium1.6.3 过程
- Appium在MAC上搭建appium1.7笔记(真机)
- Appium之Mac配置Appium全过程
- Mac上安装Appium环境
- sql语句update中多个case/when的写法
- Java并发编程:Lock
- Android--面试中遇到的问题总结(三)
- 系统到底需不需要升级?
- BZOJ1984——月下“毛景树”
- appium在mac上的配置
- 基于opencv的SVM实现
- QGraphicsEffect特效(模糊,变色,阴影,透明)
- ASM 翻译系列第六弹:高级知识 如何映射ASMLIB管理的盘到它对应的设备名
- Combination相关集合
- 二分查找法
- mac docker镜像(下载加速)
- 编程原则
- pyc10