有段时间没有使用appium了,最近发现appium的内容更新了很多,而我是一个做android自动化测试的,正好用appium小试一把;
我的过程为:
1.首先创建一个java工程,然后把实例代码复制进去,第一个工程主要验证环境是否有问题;(从githun下把appium的代码https://github.com/appium/sample-code/tree/master/sample-code/examples/java/junit/src/test/java/com/saucelabs/appium加入到我的工程中,代码中的路径跟包名大家要修改好)
2.导入包,
说明:
我首先导入的是java-client-2.0,0.jar这个包,导入后代码driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);会提示错误“Cannot instantiate the type AppiumDriver”,看有的文章是说“Appium2.0.0把AppiumDriver这个类改成了抽象函数,所以导致了这个问题 ”(参考:http://www.bkjia.com/Androidjc/888290.html)
3.导入包以后开始运行程序,运行后提示错误如下:
“Error: Android devices must be of API level 17 or higher”,说明模拟器或者手机设备需要API Level 17及其以上的才可以;
我复制的源代码如下:
package com.saucelabs.appium;
import io.appium.java_client.AppiumDriver;
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.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.io.File;
import java.net.URL;
import java.util.List;
public class AndroidContactsTest {
private AppiumDriver driver;
@Before
public void setUp() throws Exception {
// set up appium
File classpathRoot = new File(System.getProperty("user.dir"));
File appDir = new File(classpathRoot, "./apps/ContactManager");
File app = new File(appDir, "ContactManager.apk");
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.BROWSER_NAME, "");
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("deviceName","Android Emulator");
capabilities.setCapability("platformVersion", "4.4");
capabilities.setCapability("app", app.getAbsolutePath());
capabilities.setCapability("appPackage", "com.example.android.contactmanager");
capabilities.setCapability("appActivity", ".ContactManager");
driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
}
@After
public void tearDown() throws Exception {
driver.quit();
}
@Test
public void addContact(){
WebElement el = driver.findElement(By.name("Add Contact"));
el.click();
List<WebElement> 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);
driver.findElementByName("Save").click();
}
}
这样执行的话仍然会出现问题,错误提示为“java.lang.NoClassDefFoundError: com/google/gson/JsonParser”
需要导入google gson jar包,下载地址:http://www.java2s.com/Code/Jar/g/Downloadgson224jar.htm(本人导入的是1.7.1的jar包,工作正常)