Appium 走过的坑( Mac+java )--Android 篇
Apple的坑走完后,终于打开了界面,想想还是有点小激动的,然后进入了更坑的Android环境搭建。
如果你以为这环境就和Apple这样easy能解决(虽然不少坑 - -),那就大错特错,android环境等于另外一套东西,比Apple难弄多了,机制也很傻。。。
牢骚话少说,咱们来跨坑,第一个坑随即而来,之前我在说Apple环境时,下载安装完appium工具,Apple环境自动已经完善(前提是你已经安装完xcode)。那么android环境应该怎么配置呢?
我就绕过我求寻真理的沼泽了,直接说怎么配吧:
先去网上下载一个sdk
https://developer.android.com/sdk/index.html
在这个页面下下载工具或者下载sdk都可以,建议下载工具,虽然不用(也是有原因的。。。这傻工具不认我配的1.8 jdk,好像只认默认路径的1.6和1.7,算了不研究它了)
安装完后,配置环境变量:
进入/etc/ , 编辑profile文件(注意:需要用sudo 命令编辑文件)
export ANDROID_HOME=/Users/"username"/Library/Android/sdk
如果是只下载sdk,解压出来普遍好像放到/usr/local/sdk,具体自己看,放哪里其实没啥关系
保存关闭(命令:wq!)
source profile
安全点就重启下,然后打开终端确认下是否有用
cd $ANDROID_HOME
检查下是不是进入了sdk的目录,如果是,恭喜,又跨过了一个坑。
接下来就是打开工具了:
cd tools
./android
会打开一个新东西:
说白了,这个就是类似下载驱动的东西,那能下就下吧,如果觉得慢,就下几个自己用的到的版本(我是全下了- -。。。)
搞定后,注意这个sdk manager的一些配置选项,有个tools目录(左上角):
点击tools然后点击下拉框中的manager avds
很好,又出来一个新东西:
Create一个新的,我选的版本是安卓4.4.2版本,选项很简单,不要太多关注,内存之类的300足矣,能开就行,保存好,就start吧。
打开之后如图:
安卓机已起,还等什么,打开appium,点击doctor,看看还有没有问题,一切OK,只欠junit了,来段官方脚本:
import static org.junit.Assert.*; import java.io.File; import java.net.URL; import java.util.List; import io.appium.java_client.AppiumDriver; import io.appium.java_client.android.AndroidDriver; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebElement; import org.openqa.selenium.remote.DesiredCapabilities; public class AppiumAndroidTest { private AppiumDriver dr; @Before public void setUp() throws Exception { File classpathRoot = new File(System.getProperty("user.dir")); File appDir = new File(classpathRoot, "../../../apps/ApiDemos/bin"); File app = new File(appDir, "ApiDemos-debug.apk"); DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("deviceName","Android Emulator"); capabilities.setCapability("platformVersion", "4.4"); capabilities.setCapability("platformName", "Android"); capabilities.setCapability("app", app.getAbsolutePath()); capabilities.setCapability("appPackage", "io.appium.android.apis"); capabilities.setCapability("appActivity", ".ApiDemos"); dr = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); } @After public void tearDown() throws Exception { dr.quit(); } @Test public void test() { WebElement el = dr.findElement(By.name("Animation")); assertEquals("Animation", el.getText()); el = dr.findElementByClassName("android.widget.TextView"); assertEquals("API Demos", el.getText()); el = dr.findElement(By.name("App")); el.click(); List<WebElement> els = dr.findElementsByClassName("android.widget.TextView"); assertEquals("Activity", els.get(2).getText()); } }
抄归抄,但我也看了下,发觉一个问题,这两行代码是啥意思:
File classpathRoot = new File(System.getProperty("user.dir")); File appDir = new File(classpathRoot, "../../../apps/ApiDemos/bin"); File app = new File(appDir, "ApiDemos-debug.apk");
理解了下,就是添加本地的apk,那这个文件在哪里呢,拉官方教程的时候,到的确有apps文件夹,找一下,那怎么融进去呢,放的目录对不对呢
根据代码的写法,这apps目录是写到了user根目录,那好吧,咱就cp一份过来,放到~目录
好了,自此,我们可以跑代码了,记得将appium,android虚拟机,都开出来,
"platformName", "Android" ----这里对应好自己虚拟机的名称。
恭喜,终于都跑起来了,接下来,坑又来了,怎么获取元素,我怎么才能自己写一套自己想要的自动化脚本出来呢,请待Appium 走过的坑( Mac+java )第三期 --如何自定义编译