关于android–如何从Appium修复错误“无法从sw_vers输出检测MacOSX版本:’10.12’”的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于3分钟了解Appium:使用a
关于android – 如何从Appium修复错误“无法从sw_vers输出检测Mac OS X版本:’10 .12’”的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于3分钟了解Appium:使用appium做Android手机自动化测试!、android – Appium:如何从基于离子的混合应用程序获取WEB_VIEW?、android – Gradle依赖项导致错误“无效的Magic Number”、android – React native Appium,如何查找元素等相关知识的信息别忘了在本站进行查找喔。
本文目录一览:- android – 如何从Appium修复错误“无法从sw_vers输出检测Mac OS X版本:’10 .12’”
- 3分钟了解Appium:使用appium做Android手机自动化测试!
- android – Appium:如何从基于离子的混合应用程序获取WEB_VIEW?
- android – Gradle依赖项导致错误“无效的Magic Number”
- android – React native Appium,如何查找元素
android – 如何从Appium修复错误“无法从sw_vers输出检测Mac OS X版本:’10 .12’”
我安装了appium-1.5.3.dmg但是当我点击听诊器按钮时,Appium显示错误:
✔ Xcode is installed at: /Library/Developer/CommandLinetools
[Error: Could not detect Mac OS X Version from sw_vers output: '10.12
']
谢谢!
解决方法:
它对我有用.
您可以通过此命令配置文件:
> grep -rl“无法从sw_vers输出中检测到Mac OS X版本:”/ Applications / Appium.app /
>终端将显示:
/Applications/Appium.app//Contents/Resources/node_modules/appium/node_modules/appium-support/build/lib/system.js
/Applications/Appium.app//Contents/Resources/node_modules/appium/node_modules/appium-support/lib/system.js
/Applications/Appium.app//Contents/Resources/node_modules/appium-support/build/lib/system.js
/Applications/Appium.app//Contents/Resources/node_modules/appium-support/lib/system.js
>使用命令vim并配置每个文件.
例
vim /Applications/Appium.app//Contents/Resources/node_modules/appium/node_modules/appium-support/build/lib/system.js
配置文件:
>改变自 – >
案例10:
_arr = [’10 .8′,’10 .9′,’10 .10′,’10 .11′];
_i = 0;
到 – >
案例10:
_arr = [’10 .8′,’10 .9′,’10 .10′,’10 .11′,’10.12′];
_i = 0;
vim /Applications/Appium.app//Contents/Resources/node_modules/appium/node_modules/appium-support/lib/system.js
配置文件:
>改变自 – >
尝试{
stdout =(等待exec(‘sw_vers’,[‘ – productVersion’])).stdout;
}
到 – >
尝试{
stdout =(等待exec(‘sw_vers’,[‘ – productVersion’])).stdout.trim();
}
>改变自 – >
for(let v of [’10 .8′,’10 .9′,’10 .10′,’10 .11′]){
if(stdout.indexOf(v)=== 0){return v; }
}
到 – >
for(let of of [’10 .8′,’10 .9′,’10 .10′,’10 .11′,’10.12′]){
if(stdout.indexOf(v)=== 0){return v; }
}
vim /Applications/Appium.app//Contents/Resources/node_modules/appium-support/build/lib/system.js
配置文件:
>改变自 – >
案例10:
_arr = [’10 .8′,’10 .9′,’10 .10′,’10 .11′];
_i = 0;
到 – >
案例10:
_arr = [’10 .8′,’10 .9′,’10 .10′,’10 .11′,’10.12′];
_i = 0;
vim /Applications/Appium.app//Contents/Resources/node_modules/appium-support/lib/system.js
配置文件:
>改变自 – >
尝试{
stdout =(等待exec(‘sw_vers’,[‘ – productVersion’])).stdout;
}
到 – >
尝试{
stdout =(等待exec(‘sw_vers’,[‘ – productVersion’])).stdout.trim();
}
>改变自 – >
for(let v of [’10 .8′,’10 .9′,’10 .10′,’10 .11′]){
if(stdout.indexOf(v)=== 0){return v; }
}
到 – >
for(let of of [’10 .8′,’10 .9′,’10 .10′,’10 .11′,’10.12′]){
if(stdout.indexOf(v)=== 0){return v; }
}
单击启动听诊器按钮
3分钟了解Appium:使用appium做Android手机自动化测试!
网上写Appium相关资料的文章已经多如牛毛,今天我所提到的内容或许是你不太了解的,希望能在3分钟时间为各位看官带来不一样的收获~~
Appium这个听起来既生疏也熟悉的自动化测试工具,比起原生的UiAutomator可能是异常的不起眼,可是却是有自身独当一面的能力,可以完成许多高难度作业,完成UiAutomator不可能完成的一些任务,可以说appium丰富了UiAutomator的功能,使UiAutomator可以完成更多的任务。
Appium到底有哪些优势会让我们优先选择它去做自动化呢?
一、一句话概括Appium
一款应用于移动端的自动化测试框架,支持跨平台应用,Native、Hybird、Mobile Web都支持。其特点概括一下:
跨平台只要一套代码
不需要设置签名,不污染源代码
不需要项目源代码就可以测试
多语言支持
可支持多种通用框架
完全开源,社区活跃
二、初步认识appium工作过程
1.appium有C/S模式
2.appium是基于webdriver协议对移动设备自动化api扩展而成的,所有具有和webdriver一样的特性,比如多语言支持。
3.webdriver是基于http协议的,第一连接会建立一个session会话,并通过post发送一个json告知服务端相关测试信息。
4.对于Android来说,4.2以后是基于UiAutomator框架实现查找注入事件的,4.2以前则是instrumentation框架的,并封装成一个叫Selendroid提供服务。
5.客户端只需要发送http请求实现通讯,意味着客户端就是多语言支持的。
6.appium服务端是node.js写的,所以安装那个平台都是先安装node,然后npm install -g appium(需要FQ)。
三、环境搭建
步骤:
1.java开发环境JDK
2.android SDK(platform/platform tools/tools/build tools)
3.python下载安装(pip)
4.appium下载安装(服务端+客户端)
5.安装appium-python-client
6.安装unittest
第一步
安装JDK,安装完成后配置环境变量。
cmd下java -version检查环境变量是否配置成功。
第二步
安装Android SDK(安卓软件开发包),测试Android手机必然是要安装Android SDK。
下载地址:
解压后将文件夹添加到环境变量中,添加环境变量,必须创建一个名为ANDROID_HOME的变量。
双击SDK Manager,选装工具。必装:Tools文件夹下Android SDK Platform-tools和Android SDK Build-tools,Android SDK Tools可以选择是否更新,建议网速OK直接更新。GoogleFQ安装:Extras文件夹下所有的全部安装。
Path环境变量中添加ANDROID_HOME、tools、platform-tools、build-tools目录。保存修改。
环境变量配置完成后,连接安卓手机,并将Android手机的开发者选项-USB调试打开。
在CMD下执行,adb devices,出现下图样式则代表通过adb命令,获取到了连接在电脑上Android手机的UDID。
adb devices在获取连接的安卓手机时,一定会遇到很多坑,这里我们梳理下可能会遇到的坑。
1、手机USB调试一定要打开。
2、多找两根USB线,排除线的问题。
3、多换几个USB接口,排除USB个别接口不好使问题(如:3.0 与 2.0)
4、驱动程序,通过设备管理器查看是否安装驱动或驱动不是最新。
5、更新adb_usb.ini文件,少数电脑不能识别Android手机时,可以将设备管理器下的Android手机的VID、PID增加到adb_usb.ini文件中。
将VID、PID中“_”后的4位数增加到adb_usb.ini下(注:adb_usb.ini默认在C盘当前用户家目录下的.android目录下)
理论上这些操作都操作一遍后,基本adb devices就可以找到Android手机了。
第三步
安装node.js,之后就可以直接通过npm安装Appium。(注:npm类似于Python的pip,一个非官方包管理器)
官方下载地址:
根据自己的操作系统下载不同版本的node.js
node.js的安装一路傻瓜式next就可以了,安装成功后会自动添加环境变量。
安装成功后,检测下npm是否可用。
第四步
安装appium服务端,可通过cmd 下输入 npm install -g appium 进行安装。
如果npm install -g appium特别慢,无法下载时,可以用国内的镜像npm --registry install -g appium
安装如果失败可以尝试通过cnpm安装appium
通过npm命令安装cnpm
npm install -g cnpm --registry=
通过cnpm安装appium
cnpm install -g appium --no-cache
安装成功后,通过appium -v 查看当前appium版本,直接输入appium则启动appium server端。
如果仍无法下载appium服务端,那就只能在Appium官方网站上下载操作系统相应的Appium版本。
当前最新版本为 AppiumForWindows_1_4_16_1.zip ,注意这是一个 Windows 版本,如果你的电脑为MAC请下载 appium-1.5.3.dmg 。
再来提供一个百度网盘的下载链接:
我们以 Windows 为例,将下载的 AppiumForWindows.zip 进行解压,点击 appium-installer.exe 进行安装。
双击启动,appium server 界面如下。
最后,打开Windows命令提示符,输入“appium-doctor”命令,如果出现以下提示,说明你Appium所需要的各项环境都已准备完成。
注:如果提示:“appium-doctor”不是内部或外部命令,找到Appium的安装目录,例如:
C:\Program Files\Appium\node_modules\.bin
添加到环境变量path下面。
第五步
安装appium客户端,用于抓取app上定位信息。
双击安装,安装成功后左面会有一个appium的快捷方式。
到这里Windows-Android-appium的所有环境就已经搭建完成了。
总结:
Appium目前是一种比较先进的测试工具,可以覆盖到UiAutomator所涉及的各个方面,还能完成webview的自动化测试,但是部署环境较复杂,而且出现很多的异常情况很难去定位到问题,同时网上资料也比较匮乏,导致其普及范围不是很广,希望这篇文章可以帮助需要用到appium工具的同学,快速越过搭建环境这一关,快速投入到混合型App的自动化测试当中。
上面是我收集的一些视频和面试题资料。
对于软件测试的的朋友来说应该是最全面最完整的面试备战仓库,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这个仓库也已经帮助了很多的软件测试的学习者,希望也能帮助到你
关注我的微信公众号【程序员二黑】免费获取
android – Appium:如何从基于离子的混合应用程序获取WEB_VIEW?
我编写了一个示例测试来点击登录按钮并将密钥发送到必需的字段,如email和pwd.我曾使用uiautomatorviewer查找带有id的元素.
例如:driver.findElement(By.id(“io.mysoft.testapp:id / login”)).click();
到目前为止,一切都很清晰完美,但我的样本测试失败了,显示我的错误
Failed: Loginforsample org.openqa.selenium.NoSuchElementException: An element Could not be located on the page using the given search parameters. (WARNING: The server did not provide any stacktrace information) Command duration or timeout: 5.51 seconds
经过长时间的研究,我发现我们必须通过driver.context(“WEB_VIEW”);切换到测试逻辑中的WEB_VIEW.我还尝试使用以下代码获取WEB_VIEW:
Set<String> contextNames = ((AppiumDriver) driver).getContextHandles(); for (String contextName : contextNames) { System.out.println("FirsT" + contextNames);//output is //NATIV_APP ((AppiumDriver) driver).context(contextName); }
我只从阵列中获取NATIV_APP但没有打印WEB_VIEW.我已经研究过要启用WEB_VIEW调试,我们必须在webView类上调用静态方法setWebContentsDebuggingEnabled,这样我们就可以在webView上查找元素并对其进行清晰测试.
我是一个角色开发者,我选择离子来开发混合应用程序.我的应用程序中没有类或任何内容,即编码时没有java.吃掉我大脑的问题是如何在我的离子应用程序(混合)中启用setWebContentsDebuggingEnabled?有没有办法从离子混合应用程序获取web_view?我认为这是我的测试失败的主要原因.请任何人都有解决方案.过去一周我一直在研究这个问题.
提前致谢.
解决方法
此外,一旦获得WEB_VIEW,您就可以直接在Web View中查找元素.为此,您需要更新Android SDK.最新的UIAutomator具有内置功能,可以在不切换上下文的情况下查找Web视图中的元素.
您需要具有OS版本6.0的Android设备来自动执行脚本,并且在自动执行脚本之后,您可以将其用于OS版本低于6.0的设备.
我已经回答了类似的问题here.你可以参考这个.
我希望这有帮助 :)
android – Gradle依赖项导致错误“无效的Magic Number”
这是我得到的错误:
:app:shrinkDebugMultiDexComponents Failed
FAILURE: Build Failed with an exception.
- What went wrong:
Execution Failed for task ‘:app:shrinkDebugMultiDexComponents’.
java.io.IOException: Can’t read [D:\dev\gitRepo\app\android\app\build\intermediates\multi-dex\debug\allclasses.jar] (Can’t process class [__MACOSX/com/stripe/android/._BuildConfig.class] (Invalid magic number [51607] in class))- Try:
Run with –stacktrace option to get the stack trace. Run with –info or –debug option to get more log output.
给我错误的条带包是第三方库that you can find here.我将它作为我的build.gradle文件中的依赖项完全按照他们的说法列出.
compile 'com.stripe:stripe-android:+'
我已经注释掉了与条纹相关的所有代码,并且应用程序运行完全正常,所以我知道它与我如何处理该包有关.
不幸的是,我不记得我做了什么让这个停止工作.我确实认为在发生这一周的前一周我升级了Android Studio,并花了相当多的时间搞乱ProGuard配置.
我尝试过的:
>在没有进行ProGuard更改的主分支上工作.
>卸载并重新安装Android Studio
>重新克隆git repo
>安装API 17(eclipse的条纹需要这个.不是Studio,但我试了一下).
>联系条形客户支持,但他们没有任何线索.
> This stack overflow post.但是,没有Mac计算机触及过该项目,也没有亲自压缩与条纹有关的任何内容.
> From here,将幻数从十六进制转换为ASCII.结果是我不认识的Q`.
我认为这可能与我为ProGuard所做的事情有关,但我不明白如何做.我和Proguard的工作完全不同,有一个干净的AndroidStudio安装,有一个干净的存储库克隆,当我在办公室时,项目仍然正常.
编辑
我在调试BuildType上运行它.这些是我的3个gradle文件.第一个是整个项目,第二个是应用程序模块,第三个是本地android库模块.
项目build.gradle:
buildscript {
存储库{
jcenter()
maven {url’http://download.crashlytics.com/maven‘}
}
依赖{
classpath’com.android.tools.build:grad:1.2.3′
classpath’com.crashlytics.tools.gradle:crashlytics-gradle:1. “
}
}
allprojects { repositories { jcenter() maven{ url 'http://download.crashlytics.com/maven' } } }
Android应用程序模块build.gradle
buildscript { repositories { maven { url 'https://maven.fabric.io/public' } } dependencies { classpath 'io.fabric.tools:gradle:1.+' } } apply plugin: 'com.android.application' apply plugin: 'io.fabric' repositories { maven { url 'https://maven.fabric.io/public' } } android { compileSdkVersion 22 buildToolsversion "22.0.1" defaultConfig { applicationId "com.app.android" renderscriptTargetApi 19 renderscriptSupportModeEnabled true minSdkVersion 16 targetSdkVersion 22 multiDexEnabled = true } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.txt' buildConfigField 'Boolean','enableCrashlytics','true' } debug { buildConfigField 'Boolean','false' } adhoc { debuggable true signingConfig signingConfigs.debug buildConfigField 'Boolean','true' } } packagingOptions { exclude 'meta-inf/DEPENDENCIES.txt' exclude 'meta-inf/LICENSE.txt' exclude 'meta-inf/NOTICE.txt' exclude 'meta-inf/NOTICE' exclude 'meta-inf/LICENSE' exclude 'meta-inf/DEPENDENCIES' exclude 'meta-inf/notice.txt' exclude 'meta-inf/license.txt' exclude 'meta-inf/dependencies.txt' exclude 'meta-inf/LGPL2.1' } } dependencies { compile project(':localLibrary') compile 'com.facebook.android:facebook-android-sdk:3.21.1' compile 'commons-io:commons-io:2.4' compile 'com.github.bumptech.glide:glide:3.6.1' compile 'com.android.support:support-v4:22.0.1' compile 'com.google.android.gms:play-services-identity:8.1.0' compile 'com.google.android.gms:play-services-plus:8.1.0' compile 'com.google.android.gms:play-services-maps:8.1.0' compile 'com.android.support:multidex:1.0.1' compile 'io.card:android-sdk:5.0.1' compile 'com.stripe:stripe-android:+' compile('com.crashlytics.sdk.android:crashlytics:2.5.2@aar') { transitive = true; } }
本地Android库模块build.gradle
apply plugin: 'com.android.library' android { compileSdkVersion 22 buildToolsversion "22.0.1" defaultConfig { minSdkVersion 16 targetSdkVersion 22 multiDexEnabled = true } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard-rules.txt' } } } dependencies { compile 'com.android.support:support-v4:22.1.0' compile 'com.google.code.gson:gson:2.2.2' compile 'com.android.support:multidex:1.0.0' compile group: 'org.apache.httpcomponents',name: 'httpmime',version: '4.3.5' compile group: 'org.apache.httpcomponents',name: 'httpclient-android',version: '4.3.5' }
解决方法
在Android Studio中转到
File -> Project Structure -> SDK Location
JDK位置应该是Java 1.7.x(Java 7)
android – React native Appium,如何查找元素
我正在使用模拟器,Nexus 6,android 6.0,ubuntu,appium 1.6.0,RN 0.39.2.
我正在努力找到最基本的例子:
// foo.js render () { return ( <Text>foo</Text> ) } // spec.js // ... some setup ... driver .elementByAccessibilityId(''foo'') .click()
我得到……
1) should be able to find ''Buttons'' and click it 0 passing (13s) 1 failing 1) Android find and click should be able to find ''Buttons'' and click it: Error: [elementByAccessibilityId("foo")] Error response status: 7,NoSuchElement - An element Could not be located on the page using the given search parameters. Selenium error: An element Could not be located on the page using the given search parameters.
我也尝试过设置:
<可访问文本的accessibilityLabel = {''foo''}> foo< / Text>
同样的回应……
有任何想法吗?
解决方法
<Text accessibilityLabel={ ''FOO'' } testID={ ''FOO'' }>some stuff here</Text>
然后在测试中:
driver .elementByAccessibilityId(''FOO'')
感谢@jonesdar指出here
今天关于android – 如何从Appium修复错误“无法从sw_vers输出检测Mac OS X版本:’10 .12’”的介绍到此结束,谢谢您的阅读,有关3分钟了解Appium:使用appium做Android手机自动化测试!、android – Appium:如何从基于离子的混合应用程序获取WEB_VIEW?、android – Gradle依赖项导致错误“无效的Magic Number”、android – React native Appium,如何查找元素等更多相关知识的信息可以在本站进行查询。
本文标签: