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平台的样例程序,即联系人管理小应用。
2、进入主题
我在E:\AppiumForWindows\sample-code-master\sample-code-master\sample-code\examples\java\junit\src\test\java\com\saucelabs\appium这个路径下找不到AndroidContactsTest.java文件,于是网上复制来了下面的代码,并进行修改,添加到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环境下,可以使用appium的inspector轻松定位元素,甚至直接得到xpath;但是对于Android环境,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); //猜测这个swipe是为了显示出被键盘遮挡住的save按钮,可以用driver.hideKeyboard();替代。
driver.findElementByXPath(".//*[@text='Save']").click();
}
}
要修改1和2两个位置,分别修改成
1------private AppiumDriver driver;
2------File appDir = new File(classpathRoot,"/apps");
网友评论