appium 演示代码

来源:互联网 发布:淘宝发货地可以改吗 编辑:程序博客网 时间:2024/06/07 06:20

官方contactManager.apk演示代码终于run pass了。

1. 打开appium,连接真机,需要配置运行的程序apk地址;check on “No reset”;配置真机的device name;勾选Wait for package

2. cmd运行adb devices -l 确保真机与电脑已连接

3. appium 点击运行

4. Android Studio 右键run ...Test即可。


遇到的问题:

1. 不支持findByElement By tag name

查了说需要capabilities.setCapability("automationName","Selendroid");,但是加了以后Selendroid又需要支持别的intranet还是啥的权限,很麻烦;

后来一想既然不支持tag name,那支持别的呗。用Appium inspector看了一下,details里有class: android.widget.EditText,于是将代码改为以下即可:

//        List<WebElement> textFieldsList = driver.findElements(By.tagName("textfield"));
        List<WebElement> textFieldsList = driver.findElements(By.className("android.widget.EditText"));


2. 其他是appium连接真机cannot create session之类的,是因为appium需要check on "No reset"和“Wait for package”

3. 还有遇到的问题就是下载的jar包里的东西不全,额,从网上找了多个版本才解决。


注:一般的文章没有提到的需要导入junit的jar包


以下是代码:

package com.example;import org.junit.After;import org.junit.Before;import org.junit.Test;import org.openqa.selenium.By;import org.openqa.selenium.Capabilities;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.interactions.HasTouchScreen;import org.openqa.selenium.interactions.TouchScreen;import org.openqa.selenium.remote.CapabilityType;import org.openqa.selenium.remote.DesiredCapabilities;import org.openqa.selenium.remote.RemoteTouchScreen;import org.openqa.selenium.remote.RemoteWebDriver;import java.io.File;import java.net.URL;import java.util.List;public class AndroidContactsTest {    private WebDriver driver;    @Before    public void setUp() throws Exception {        // set up appium        File classpathRoot = new File(System.getProperty("user.dir"));        //存放app目录:apps        File appDir = new File(classpathRoot, "/src/main/java/apps");        File app = new File(appDir, "ContactManager.apk");        DesiredCapabilities capabilities = new DesiredCapabilities();        capabilities.setCapability("device","Android");        capabilities.setCapability("deviceName","Galaxy");        capabilities.setCapability("platformName","Android");        capabilities.setCapability(CapabilityType.BROWSER_NAME, "Galaxy");        //我真机的安卓版本是4.2.2        capabilities.setCapability(CapabilityType.VERSION, "4.2.2");        //使用的是windows平台//        capabilities.setCapability("automationName","Selendroid");        capabilities.setCapability(CapabilityType.PLATFORM, "WINDOWS");        capabilities.setCapability("app", app.getAbsolutePath());        capabilities.setCapability("app-package", "com.example.android.contactmanager");        capabilities.setCapability("app-activity", ".ContactManager");        driver = new SwipeableWebDriver(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.findElements(By.tagName("EditText"));        List<WebElement> textFieldsList = driver.findElements(By.className("android.widget.EditText"));        textFieldsList.get(0).sendKeys("wangyang");        textFieldsList.get(1).sendKeys("18872573204");        textFieldsList.get(2).sendKeys("stephenwang@gmail.com");        driver.findElement(By.name("Save")).click();    }    public class SwipeableWebDriver extends RemoteWebDriver implements HasTouchScreen {        private RemoteTouchScreen touch;        public SwipeableWebDriver(URL remoteAddress, Capabilities desiredCapabilities) {            super(remoteAddress, desiredCapabilities);            touch = new RemoteTouchScreen(getExecuteMethod());        }        public TouchScreen getTouch() {            return touch;        }    }}

原创粉丝点击