启动appium
编写脚本
import io.appium.java_client.MobileElement;
import io.appium.java_client.TouchAction;
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.touch.offset.PointOption;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.Point;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;
public class demoTest {
private AndroidDriver driver;
@Before
public void setUp() throws MalformedURLException {
DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
//desiredCapabilities.setCapability("deviceName", "192.168.71.101:5555");
desiredCapabilities.setCapability("deviceName", "192.168.242.105:5555");
desiredCapabilities.setCapability("platformName", "Android");
desiredCapabilities.setCapability("appPackage", "com.DaTong.InsuranceForAndroid");
desiredCapabilities.setCapability("appActivity", ".StartActivity");
desiredCapabilities.setCapability("ensureWebviewsHavePages", true);
URL remoteUrl = new URL("http://localhost:4723/wd/hub");
driver = new AndroidDriver(remoteUrl, desiredCapabilities);
}
@Test
public void sampleTest() throws InterruptedException {
TimeUnit.SECONDS.sleep(5);
MobileElement el1 = (MobileElement) driver.findElementById("com.DaTong.InsuranceForAndroid:id/buttonOK");
el1.click();
WebElement elem = driver.findElementById("com.DaTong.InsuranceForAndroid:id/image");
Point start = elem.getLocation();
TouchAction ta = new TouchAction(driver);
int startX = start.x;
int startY = start.y;
Dimension q = elem.getSize();
int x = q.getWidth();
int y = q.getHeight();
int endX = x + startX;
int endY = y + startY;
int centreX = (endX + startX) - 2;
int centreY = (endY + startY) - 2;
Point a = new Point(centreX,centreY);
Point b = new Point(centreX/10,centreY);
ta.press(PointOption.point(a)).moveTo(PointOption.point(b)).release().perform();
ta.press(PointOption.point(a)).moveTo(PointOption.point(b)).release().perform();
ta.press(PointOption.point(a)).moveTo(PointOption.point(b)).release().perform();
MobileElement el2 = (MobileElement) driver.findElementById("com.android.packageinstaller:id/permission_allow_button");
el2.click();
el2.click();
MobileElement el3 = (MobileElement) driver.findElementByXPath("//*[@resource-id=‘com.DaTong.InsuranceForAndroid:id/tvIconTitle‘ and @text=‘计划书‘]");
el2.click();
}
@After
public void tearDown() {
// driver.quit();
}
}
定位
id
xpath:
# 元素定位-组合定位方式
driver.find_element_by_xpath("//*[@resource-id=‘com.tfffc.cf:id/id_text‘ and @text=‘我的‘]").click()
accessibityId:conttent-desc
不推荐使用:class-ios、-android
交互
断言
简单的断言用:import static org.junit.Assert.assertEquals;
assertEquals("大童邀请函",driver.findElementById("com.DaTong.InsuranceForAndroid:id/titleBar_title").getText());
常用断言:hamcrest(查看官方文档即可)
详细查看官方文档:http://appium.io/docs/en/commands/session/timeouts/implicit-wait/
以下是简单介绍常用操作,具体查看官方文档。
drvier:
find定位元素
getPageSource获取元素列表
getLocation获取元素位置
quit退出
activateapp激活app
swich_to切换至其他页面
截图:FileUtils.copyFile(driver.getScreenshotAs(OutputType.FILE),new File("1.png"));
具体元素操作:
el2.click();//点击
el2.getAttribute();//获取元素属性
el2.isDisplayed();//元素是否展现
el2.sendKeys(‘dfaf‘);//输入中文,启动app时,capabilities需要设置unicodekeyboard为true
手势操作:
详细查看官方文档:http://appium.io/docs/en/commands/session/timeouts/implicit-wait/
press
release
moveTo
tap wait
longPress
cancel
perform
例子:
ta.press(PointOption.point(a)).moveTo(PointOption.point(b)).release().perform();
原文:https://www.cnblogs.com/novice77/p/14872099.html