1、sample-code-master下載傳送門:https://github.com/appium-boneyard/sample-code
下載完成后,E:\AppiumForWindows\sample-code-master\sample-code-master\sample-code\apps\ContactManager里有ContactManager.apk,是基于Android平臺的樣例程序,即聯(lián)系人管理小應(yīng)用。
2、進(jìn)入主題
我在E:\AppiumForWindows\sample-code-master\sample-code-master\sample-code\examples\java\junit\src\test\java\com\saucelabs\appium這個(gè)路徑下找不到AndroidContactsTest.java文件,于是網(wǎng)上復(fù)制來了下面的代碼,并進(jìn)行修改,添加到src---com.saucelabs.appium里

源代碼:
package com.saucelabs.appium;
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.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;// driver用AppiumDriver聲明。
? ? @Before
? ? public void setUp() throws Exception {
? ? ? ? // set up appium
? ? ? ? //File classpathRoot = new File(System.getProperty("user.dir"));
? ? ? ? File appDir = new File( "E:/package");
? ? ? ? File app = new File(appDir, "ContactManager.apk");
? ? ? ? DesiredCapabilities capabilities = new DesiredCapabilities();
? ? ? ? capabilities.setCapability("deviceName","Honor6"); //deviceName必須有,但是值可以隨意寫。
? ? ? ? capabilities.setCapability("platformVersion", "4.4");
? ? ? ? capabilities.setCapability("app", app.getAbsolutePath());
? ? ? ? capabilities.setCapability("appPackage", "com.example.android.contactmanager");//使用adb shell獲取package和activity,詳見
? ? ? ? capabilities.setCapability("appActivity", ".ContactManager");
? ? ? ? driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);//driver用AndroidDriver賦值。
? ? }
? ? @After
? ? public void tearDown() throws Exception {
? ? ? ? driver.quit();
? ? }
? ? @Test
? ? public void addContact(){
? ? ? ? WebElement el = driver.findElement(By.xpath(".//*[@text='Add Contact']"));//在iOS環(huán)境下,可以使用appium的inspector輕松定位元素,甚至直接得到xpath;但是對于Android環(huán)境,appium的inspector有很多限制。因此,需要使用UIAutomatorviewer定位元素。
? ? ? ? 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); //猜測這個(gè)swipe是為了顯示出被鍵盤遮擋住的save按鈕,可以用driver.hideKeyboard();替代。
? ? ? ? driver.findElementByXPath(".//*[@text='Save']").click();
? ? }
}
要修改1和2兩個(gè)位置,分別修改成
1------private AppiumDriver driver;
2------File appDir = new File(classpathRoot,"/apps");
