appium 整理

来源:互联网 发布:使用数据库的软件 编辑:程序博客网 时间:2024/06/05 10:34

学习 appium 也有一段时间了,基本的操作也基本都能搞好,但是 混合页面H5 我没能搞定 先不管了,先把自己遇到的东西记录下来。

1.首先是环境问题  那先看看 安装好后的appium,在命令行输入appium-doctor 都有些什么

ANDROID_HOME 是需要配置的android环境 sdk,相关请自行百度 教程很多 主要2步:1.下载sdk 2.配置环境变量。

测试 在命令行输入:adb,会出现很多信息说明成功

---------------这个愉快的分隔符-----------

JAVA_HOME 那这个是需要配置的java环境,也是两步:1.下载sdk 2.配置环境变量。

测试 在命令行输入:javac,会出现很多信息说明成功

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

下面的3个 都是 sdk中的运行文件 adb.exe\android.bat\emulator.exe,因为这几个 appium要用所以需要放到系统环境path中,上面2个如果能配好这个也就轻轻松了


2.相关的环境配置好,然后就是需要 下载 appium并且安装了,不具体说了有两种方式,网上相关教程也行多请百度(其实挺讨厌百度的,现在基本都是bing要不就是翻墙)

其实环境和安装appium,都说不是难,最让人头疼的就是 第一次成功运行第一个小demo

这里先不说代码,先看看项目结构。


src 下是就是我们写脚本的地方

下面的3个都是 需要的jar包支持,

第一个appium 是很多的jra(等下具体说),

第二个三个是运行java程序必须的,我之所以加了1.7和1.8两个是因为 运行appium 时提示缺少1.8的jre,但是1.7的又不能去掉。所以我就照着做了,没特别的意思

最后一个apps 是待测的app


主要需要说的就是appium 这个jar包里有些什么到底怎么配,配怎样的额版本才能正常使用


简直了,是不是很多,而且里面还有selenium 相关的jar包。比担心我 来说

http://www.cnblogs.com/puresoul/p/4696825.html

额,篇文章不错的大家可以看看


可能由于这片文章太久,appium做了改动,所以 我当初按照他的类路去添加并没有成功

下载地址是一样的,我经过了好久的摆弄,然后找到很合适的一个版本配合

selenium-server-standalone-2.48.2.jar(这个用最新的应该就可以)
selenium-2.48.2(lib整个文件夹+selenium-java-2.48.2.jar+selenium-java-2.48.2-srcs.jar)
java-client-4.1.2.jar

上面就是appium jar包内的全部东西

我用的是java,大家可以下载相应的

appium jar包下载:https://search.maven.org/#search%7Cga%7C1%7Cg%3Aio.appium%20a%3Ajava-client


selenium jar包下载:http://docs.seleniumhq.org/download/(这个,需要翻墙)



到这里就可以试着写自己的第一个代码了,还是参照上面说的那片文章http://www.cnblogs.com/puresoul/p/4696825.html

也有相应的例子可以下载

3.我遇到的错误信息

-----------------------------------------------------------------
org.openqa.selenium.SessionNotCreatedException: A new session could not be created. (Original error: Bad app: D:\eclpse_workspase\appiumTest\apps\xxx.apk. App paths need to be absolute, or relative to the appium server install dir, or a URL to compressed file, or a special app name. cause: Error: Error locating the app: ENOENT, stat 'D:\eclpse_workspase\appiumTest\apps\xxx.apk') (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 166 milliseconds
Build info: version: '2.48.2', revision: '41bccdd', time: '2015-10-09 19:59:12'
System info: host: 'SKY-20170223KZD', ip: '192.168.1.108', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_131'


仔细查路径
-------------------------------------------------------------------
org.openqa.selenium.SessionNotCreatedException: A new session could not be created. (Original error: Command failed: C:\Windows\system32\cmd.exe /s /c "D:\adt_sdk_eclpse\android-sdk-windows\platform-tools\adb.exe -s adb server version (31) doesn't match this client (39); killing...
 wait-for-device"
error: could not install *smartsocket* listener: cannot bind to 127.0.0.1:5037: 通常每个套接字地址(协议/网络地址/端口)只允许使用一次。 (10048)


This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
could not read ok from ADB Server
* could not start server *
) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 20.76 seconds
Build info: version: '2.48.2', revision: '41bccdd', time: '2015-10-09 19:59:12'
System info: host: 'SKY-20170223KZD', ip: '192.168.1.108', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.8.0_131'


查找端口是否被占用
------------------------------------------------------------------
org.openqa.selenium.SessionNotCreatedException: appium could not start a new session.


检查 app的名称和路径

4.appium 相关设置


1.是被测app的路径

2.是被测app的 包名

3.是被测app的启动主activity名,这两个 可以问开发 或者(以下5个截图,a-e)


a.下载apktool,百度去下

b.进入到apktool,然后 找到appt.exe,并且把 被测app复制进来。此刻注意当前的位置复制下来 下一步用

c.进入命令框,进入到 刚刚复制的那个路径下,然后 输入:aapt dump badging *.apk(这个为app的名字),点击回车

d.可以看到这个就是包名

e.在很长的下拉后,这个就是启动主activity名

ok,接着说app 里面的4和5

4.勾选

No Reset 后,每次由appium启动app,就不会每次都重新安装了

或者代码中 // 不要每次运行都安装app
capabilities.setCapability("noReset", true);
capabilities.setCapability("fullReset", false);

5.这里 只需要改动 PlatormVersion(被测app 安装的手机android版本或模拟器的andorid版本)

5.最后就是代码问题了

 如果能运行起来前面那篇文章的demo,下面就不陌生了

@Before
public void Sliding() throws Exception {
// 设置apk路径 Property性质、财产
File classpathRoot = new File(System.getProperty("user.dir"));
File appDir = new File(classpathRoot, "apps");
File app = new File(appDir, "HJQ_7_v1.2.2__360.apk");--------app名称一定不要弄错


// 设置自动化测试参数 Capability能力
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.BROWSER_NAME, "");
capabilities.setCapability("platformName", "Android"); // platform 平台
capabilities.setCapability("deviceName", "Android Emulator");


// 设置android系统版本
capabilities.setCapability("platformVersion", "4.4"); ----------之前说的那个手机或模拟器的版本号
// 设置apk路径
// capabilities.setCapability("app", app.getAbsolutePath());---------只用上面那种方式就可以,这个我也不怎么懂


// support(支持) Chinese
capabilities.setCapability("unicodeKeyboard", "True");
capabilities.setCapability("resetKeyboard", "True");
// no need sign(是否重签名)
capabilities.setCapability("noSign", "False");
// 不要每次运行都安装app
capabilities.setCapability("noReset", true);
capabilities.setCapability("fullReset", false);


// 设置app的主机包和主类包
capabilities.setCapability("appPackage", "com.xxx.q");
capabilities.setCapability("appActivity",
"com.huxxxxxxx.Activity");
// 初始化
driverSliding = new AndroidDriver<AndroidElement>(new URL(
"http://127.0.0.1:4723/wd/hub"), capabilities);
}

其实最主要的就是定位问题了

通过 name,classname,id,xpath等等,网上很多教程也很详细,这个需要多练习,给被测的app找到合适的定位方式(我多用xpath)

网上也有大神做了,一个uiautomatorviewer.bat 不需要自己定位 很方便,可以百度下载试试看,但是不建议新人使用。

最后 就是好好学习java,做好封装什么的 便于复用

加油!

嘻嘻嘻,最后呢 又是 碎碎念

树顶站着一只猫,格子花纹的猫。它像是在看着什么,又像是只忘着远方。 
树脚下蹲着一只二哈,蠢的不行,哈哈着舌头望着这只猫。 
猫知道这只狗,整日淌着口水,明明蠢的不行还表情嚣张色迷迷的张望。 
猫,之前也只是一只蠢猫。喜欢玩线团,踩书纸,追蝴蝶和摔跟头。 
直到它见到一只站在树顶的猪。 
猪,之前更是一头蠢猪。它没想过竟然真的能沿着彩虹走到这树顶。 
树每天疯涨,没想过那一天真的能触到彩虹,但是上面却走来一头猪。 


看吧 看吧,又是这样,石头在二哈的爪子下叽叽的叫。 
老夫当年怎么就孕育出这样一颗树 
不如吸取日月精华也化个那石猴,踏南天碎林霄,打他个十万天兵养上一山猴子猴孙。 
不比这一天到晚 一动不能动 看那唠甚子的紫霞来的快活自在。 
又闭上眼,等着猫下树,傍晚来。


原创粉丝点击