appium 滑动
前些日子,配置好了appium测试环境,至于环境怎么搭建,参考:http://www.cnblogs.com/tobecrazy/p/4562199.html
知乎Android客户端登陆:http://www.cnblogs.com/tobecrazy/p/4579631.html
appium实现截图和清空EditText:http://www.cnblogs.com/tobecrazy/p/4592405.html
Appium 处理滑动


向上滑动
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
        // find keyword 首页 and verify it is display
        Assert.assertTrue(driver.findElement(By.name("首页")).isDisplayed());
        snapshot((TakesScreenshot) driver, "zhihu_before_swipe.png");
        int width=driver.manage().window().getSize().width;
        int height=driver.manage().window().getSize().height;
        driver.swipe(width/2,height*3/4, width/2,height/4, 1000);
        //wait for page loading
        snapshot((TakesScreenshot) driver, "zhihu_after_swipe.png");
/**
* This Method for swipe up
*
* @author Young
* @param driver
* @param during
*/
public void swipeToUp(AndroidDriver driver, int during) {
int width = driver.manage().window().getSize().width;
int height = driver.manage().window().getSize().height;
driver.swipe(width / 2, height * 3 / 4, width / 2, height / 4, during);
// wait for page loading
} /**
* This Method for swipe down
*
* @author Young
* @param driver
* @param during
*/
public void swipeToDown(AndroidDriver driver, int during) {
int width = driver.manage().window().getSize().width;
int height = driver.manage().window().getSize().height;
driver.swipe(width / 2, height / 4, width / 2, height * 3 / 4, during);
// wait for page loading
} /**
* This Method for swipe Left
*
* @author Young
* @param driver
* @param during
*/
public void swipeToLeft(AndroidDriver driver, int during) {
int width = driver.manage().window().getSize().width;
int height = driver.manage().window().getSize().height;
driver.swipe(width * 3 / 4, height / 2, width / 4, height / 2, during);
// wait for page loading
} /**
* This Method for swipe Right
*
* @author Young
* @param driver
* @param during
*/
public void swipeToRight(AndroidDriver driver, int during) {
int width = driver.manage().window().getSize().width;
int height = driver.manage().window().getSize().height;
driver.swipe(width / 4, height / 2, width * 3 / 4, height / 2, during);
// wait for page loading
}
package com.dbyl.core; import org.apache.commons.io.FileUtils;
import org.openqa.selenium.By;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test; import io.appium.java_client.android.AndroidDriver; import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.util.List;
import java.util.concurrent.TimeUnit; public class zhiHu {
private AndroidDriver driver;
private boolean isInstall = false; /**
* @author Young
* @throws IOException
*/
public void startRecord() throws IOException {
Runtime rt = Runtime.getRuntime();
// this code for record the screen of your device
rt.exec("cmd.exe /C adb shell screenrecord /sdcard/runCase.mp4"); } @BeforeClass(alwaysRun = true)
public void setUp() throws Exception {
// set up appium DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.BROWSER_NAME, "");
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("deviceName", "Android Emulator");
capabilities.setCapability("platformVersion", "4.4");
// if no need install don't add this
if (isInstall) {
File classpathRoot = new File(System.getProperty("user.dir"));
File appDir = new File(classpathRoot, "apps");
File app = new File(appDir, "zhihu.apk");
capabilities.setCapability("app", app.getAbsolutePath());
}
capabilities.setCapability("appPackage", "com.zhihu.android");
// support Chinese
capabilities.setCapability("unicodeKeyboard", "True");
capabilities.setCapability("resetKeyboard", "True");
// no need sign
capabilities.setCapability("noSign", "True");
capabilities.setCapability("appActivity", ".ui.activity.GuideActivity");
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),
capabilities);
startRecord();
} public void login() { WebElement loginButton;
if (isLoginPresent(driver, 60)) {
loginButton = driver.findElement(By
.id("com.zhihu.android:id/login"));
loginButton.click();
} else {
Assert.assertTrue(false);
} // wait for 20s
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); // find login userName and password editText
List<WebElement> textFieldsList = driver
.findElementsByClassName("android.widget.EditText");
textFieldsList.get(0).sendKeys("seleniumcookies@126.com");
textFieldsList.get(1).sendKeys("cookies123");
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); // find ok button byName
driver.findElementById("android:id/button1").click();
driver.manage().timeouts().implicitlyWait(90, TimeUnit.SECONDS); // find keyword 首页 and verify it is display
Assert.assertTrue(driver.findElement(By.name("首页")).isDisplayed()); } public boolean isLoginPresent(AndroidDriver driver, int timeout) {
boolean isPresent = new AndroidDriverWait(driver, timeout).until(
new ExpectedCondition<WebElement>() {
public WebElement apply(AndroidDriver d) {
return d.findElement(By
.id("com.zhihu.android:id/login"));
} }).isDisplayed();
return isPresent;
} @Test(groups = "swipeTest", priority = 1)
public void swipe() { // find login button
if (isInstall) {
login();
}
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); // find keyword 首页 and verify it is display
Assert.assertTrue(driver.findElement(By.name("首页")).isDisplayed());
snapshot((TakesScreenshot) driver, "zhihu_before_swipe.png");
swipeToUp(driver, 500);
snapshot((TakesScreenshot) driver, "zhihu_after_swipe.png"); driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); swipeToDown(driver, 1000);
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
List<WebElement> titles = driver
.findElementsById("com.zhihu.android:id/title");
titles.get(0).click();
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS); //swipe to right
swipeToRight(driver, 100); driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
// find keyword 首页 and verify it is display
Assert.assertTrue(driver.findElement(By.name("首页")).isDisplayed());
} /**
* This Method for swipe up
*
* @author Young
* @param driver
* @param during
*/
public void swipeToUp(AndroidDriver driver, int during) {
int width = driver.manage().window().getSize().width;
int height = driver.manage().window().getSize().height;
driver.swipe(width / 2, height * 3 / 4, width / 2, height / 4, during);
// wait for page loading
} /**
* This Method for swipe down
*
* @author Young
* @param driver
* @param during
*/
public void swipeToDown(AndroidDriver driver, int during) {
int width = driver.manage().window().getSize().width;
int height = driver.manage().window().getSize().height;
driver.swipe(width / 2, height / 4, width / 2, height * 3 / 4, during);
// wait for page loading
} /**
* This Method for swipe Left
*
* @author Young
* @param driver
* @param during
*/
public void swipeToLeft(AndroidDriver driver, int during) {
int width = driver.manage().window().getSize().width;
int height = driver.manage().window().getSize().height;
driver.swipe(width * 3 / 4, height / 2, width / 4, height / 2, during);
// wait for page loading
} /**
* This Method for swipe Right
*
* @author Young
* @param driver
* @param during
*/
public void swipeToRight(AndroidDriver driver, int during) {
int width = driver.manage().window().getSize().width;
int height = driver.manage().window().getSize().height;
driver.swipe(width / 4, height / 2, width * 3 / 4, height / 2, during);
// wait for page loading
} @Test(groups = { "profileSetting" }, priority = 2)
public void profileSetting() { driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
// find keyword 首页 and verify it is display
Assert.assertTrue(driver.findElement(By.name("首页")).isDisplayed()); driver.swipe(100, 400, 100, 200, 500);
WebElement myButton = driver.findElement(By
.className("android.widget.ImageButton"));
myButton.click();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.swipe(700, 500, 100, 500, 10);
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
List<WebElement> textViews = driver
.findElementsByClassName("android.widget.TextView");
textViews.get(0).click();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); driver.findElementById("com.zhihu.android:id/name").click();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); // wait for 60s if WebElemnt show up less than 60s , then return , until
// 60s By by = new By.ById("com.zhihu.android:id/showcase_close"); snapshot((TakesScreenshot) driver, "zhihu_showClose.png");
if (isElementPresent(by, 30)) {
driver.findElement(by).click();
} Assert.assertTrue(driver
.findElementsByClassName("android.widget.TextView").get(0)
.getText().contains("selenium")); driver.findElementById("com.zhihu.android:id/menu_people_edit").click();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
WebElement intro = driver
.findElementById("com.zhihu.android:id/introduction");
intro.click();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
WebElement content = driver
.findElementById("com.zhihu.android:id/content");
String text = content.getAttribute("text");
content.click();
clearText(text);
content.sendKeys("Appium Test. Create By Young"); driver.findElementById("com.zhihu.android:id/menu_question_done")
.click(); WebElement explanation = driver
.findElementById("com.zhihu.android:id/explanation");
explanation.click();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
content = driver.findElementById("com.zhihu.android:id/content");
text = content.getAttribute("text");
content.click();
clearText(text);
content.sendKeys("Appium Test. Create By Young. This is an appium type hahahahah"); driver.findElementById("com.zhihu.android:id/menu_question_done")
.click();
snapshot((TakesScreenshot) driver, "zhihu.png"); } /**
* This method for delete text in textView
*
* @author Young
* @param text
*/
public void clearText(String text) {
driver.sendKeyEvent(123);
for (int i = 0; i < text.length(); i++) {
driver.sendKeyEvent(67);
}
} @AfterClass(alwaysRun = true)
public void tearDown() throws Exception {
driver.quit();
} /**
* This Method create for take screenshot
*
* @author Young
* @param drivername
* @param filename
*/
public static void snapshot(TakesScreenshot drivername, String filename) {
// this method will take screen shot ,require two parameters ,one is
// driver name, another is file name String currentPath = System.getProperty("user.dir"); // get current work
// folder
File scrFile = drivername.getScreenshotAs(OutputType.FILE);
// Now you can do whatever you need to do with it, for example copy
// somewhere
try {
System.out.println("save snapshot path is:" + currentPath + "/"
+ filename);
FileUtils
.copyFile(scrFile, new File(currentPath + "\\" + filename));
} catch (IOException e) {
System.out.println("Can't save screenshot");
e.printStackTrace();
} finally {
System.out.println("screen shot finished, it's in " + currentPath
+ " folder");
}
} /**
*
* @param by
* @param timeOut
* @return
*/
public boolean isElementPresent(final By by, int timeOut) {
try {
new AndroidDriverWait(driver, timeOut)
.until(new ExpectedCondition<WebElement>() {
public WebElement apply(AndroidDriver d) {
return d.findElement(by);
} });
return true;
} catch (Exception e) {
return false;
} }
}
整个过程会按照先向下,向上,向右滑动。
有了这个滑动方法,能不能做一些更高级的事?
答案将在明天揭晓,swipe
appium 滑动的更多相关文章
- appium滑动操作(向上、向下、向左、向右)
		
appium滑动操作(向上滑动.向下滑动.向左滑动.向右滑动) 测试app:今日头条apk 测试设备:夜游神模拟器 代码如下: 先用x.y获取当前的width和height def getSize() ...
 - Python Appium 滑动、点击等操作
		
Python Appium 滑动.点击等操作 1.手机滑动-swipe # FileName : Tmall_App.py # Author : Adil # DateTime : 2018/3/25 ...
 - Appium 滑动界面swipe用法
		
Appium 滑动API:Swipe(int start x,int start y,int end x,int y,duration) 解释:int start x-开始滑动的x坐标, int st ...
 - appium滑动
		
在app应用日常使用过程中,会经常用到在屏幕滑动操作.如刷朋友圈上下滑操作.浏览图片左右滑动操作等.在自动化脚本该如何实现这些操作呢? 在Appium中模拟用户滑动操作需要使用swipe方法,该方法定 ...
 - Appium滑动函数:Swipe()
		
Appium处理滑动方法是swipe 滑动API:Swipe(int start x,int start y,int end x,int y,duration) 解释: int start x-开始滑 ...
 - Appium 滑动踩坑记
		
前言 对于不同java-client版本,很多的API已经产生大的变化,所以一些API大家会发现已经失效或者使用方式发生了变化,滑动就是其中一项,这篇文章对滑动在不同的java-client版本以及不 ...
 - appium 滑动封装
		
#获得机器屏幕大小x,y def getSize(): x = dr.get_window_size()['width'] y = dr.get_window_size()['heig ...
 - Appium for iOS setup
		
windows下appium设置 之前研究了一段时间的appium for native app 相应的总结如下: ...
 - appium  for hybrid app 处理webview
		
之前研究了一段时间的appium for native app 相应的总结如下: appium测试环境搭建 :ht ...
 
随机推荐
- Android组件化和插件化开发
			
http://www.cnblogs.com/android-blogs/p/5703355.html 什么是组件化和插件化? 组件化开发就是将一个app分成多个模块,每个模块都是一个组件(Modul ...
 - div自适应高度
			
div自适应高度 Div即父容器不根据内容自适应高度,我们看下面的代码: <div id="main"> <div id="content"& ...
 - 【BZOJ-2938】病毒      Trie图 + 拓扑排序
			
2938: [Poi2000]病毒 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 609 Solved: 318[Submit][Status][Di ...
 - eclipse运行没问题,tomcat以脚本启动后插入数据库的中文会乱码
			
记一次部署工程的时候遇到的问题 部署war包到win7的时候发现,布上去后插入数据库的中文会乱码,然后发现用eclipse运行源码没问题,一开始以为是war打出来的时候编码错误,然后将eclipse的 ...
 - Linux指令
			
文件指令 ls: ls -a :把隐藏的文件显示 ls -l 显示文件的详细信息 -lh 也是显示文件的详细信息,只是文件的大小是以k单位 ls -ld 显示指定目录下的信息 mkdir: mkd ...
 - mysql 用drop和delete方法删除用户的区别
			
在学习drop方法删除用户时,按照书上讲的一直没操作成功,后来到网上查了点其他资料,才弄明白drop的方法,贴出来和大家分享一下. (方法一)drop user 用户名; 语法:drop user 用 ...
 - JDBC入门学习
			
Introduction What's JDBC JDBC stands for Java Database Connectivity, which is a standard Java API fo ...
 - 谈谈混合 App Web 资源的打包与增量更新
			
综述 移动 App 的运行环境具有带宽不稳定,流量收费,启动速度比较重要等特点,所以混合 App 如何加载 Web 资源并不是一个新问题.本文目的是总结出一种资源打包下载的思路和方案,并且提供一种打包 ...
 - 一些LINQ的使用
			
var list = from staff in staffList from extraRecord in extraList where staff.staffID == extraRecord. ...
 - SQLServer日期函数用法
			
--1.显示本月第一天 ,) ),)) --2.显示本月最后一天 ,),,))) ,,,)) --3.上个月的最后一天 ,,)) --4.本月的第一个星期一 , ) --5.本年的第一天 ,) --6 ...