Appium Basic (P4) - Scroll & swipe
Bài đăng này đã không được cập nhật trong 4 năm
Tiếp tục chuỗi bài giới thiệu Appium, ở phần này ta sẽ thực hiện thao tác Scroll & swipe
Tham khảo các phần trước của series:
Appium Basic (P1) - Run First Android Automation Test
Appium Basic (P2) - Thao tác với Textbox, Check box, Radio button
Appium Basic (P3) - Thao tác với Drop-down list, Set date time, Switch button, Handle alert dia-log
1. Swipe
Dowload và cài đặt SwipeListView Demo App tại đây.
Thực hiện các thao tác:
- Mở SwipeListView Demo App
- Chọn "Don't show this message again", click OK
Code setup BeforeTest cho SwipeListView Demo App:
package Android;
import io.appium.java_client.android.AndroidDriver;
import java.net.URL;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
public class driverSwipe {
AndroidDriver driver;
Dimension size;
@BeforeTest
public void setUp() throws Exception {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("deviceName", "ZX1B32FFXF");
capabilities.setCapability("browserName", "Android");
capabilities.setCapability("platformVersion", "4.4.2");
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("appPackage", "com.fortysevendeg.android.swipelistview");
capabilities.setCapability("appActivity","com.fortysevendeg.android.swipelistview.sample.activities.SwipeListViewExampleActivity");
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"),capabilities);
driver.manage().timeouts().implicitlyWait(15, TimeUnit.SECONDS);
WebDriverWait wait = new WebDriverWait(driver, 300);
wait.until(ExpectedConditions.elementToBeClickable(By.className("android.widget.RelativeLayout")));
}
Swipe ngang
Thực hiện swipe từ trái qua phải hoặc ngược lại
Swipe từ phải qua trái (và ngược lại), từ tọa độ startX đến endX, với tọa độ y không đổi
public void swipingHorizontal() throws InterruptedException {
//Get the size of screen.
size = driver.manage().window().getSize();
System.out.println(size);
//Find swipe start and end point from screen's with and height.
//Find startx point which is at right side of screen.
int startx = (int) (size.width * 0.70);
//Find endx point which is at left side of screen.
int endx = (int) (size.width * 0.30);
//Find vertical point where you wants to swipe. It is in middle of screen height.
int y = size.height / 2;
System.out.println("startx = " + startx + " ,endx = " + endx + " , y = " + y);
//Swipe from Right to Left.
driver.swipe(startx, starty, endx, y, 3000);
Thread.sleep(2000);
//Swipe from Left to Right.
driver.swipe(endx, y, startx, y, 3000);
Thread.sleep(2000);
}
Swipe dọc
Thực hiện swipe từ trên xuống dưới hoặc ngược lại
Swipe từ phải qua trái (và ngược lại), từ tọa độ startY đến endY, với tọa độ x không đổi
public void swipingVertical() throws InterruptedException {
//Get the size of screen.
size = driver.manage().window().getSize();
System.out.println(size);
//Find swipe start and end point from screen's with and height.
//Find starty point which is at bottom side of screen.
int starty = (int) (size.height * 0.80);
//Find endy point which is at top side of screen.
int endy = (int) (size.height * 0.20);
//Find horizontal point where you wants to swipe. It is in middle of screen width.
int x = size.width / 2;
System.out.println("starty = " + starty + " ,endy = " + endy + " , x = " + x);
//Swipe from Bottom to Top.
driver.swipe(x, starty, x, endy, 3000);
Thread.sleep(2000);
//Swipe from Top to Bottom.
driver.swipe(x, endy, x, starty, 3000);
Thread.sleep(2000);
}
2. Scroll
App để test vẫn là API Demos, bạn có thể lấy link download và code setup BeforeTest ở Phần 2
Scroll dọc
Thao tác cần thực hiện:
- Mở API Demos app
- Chọn Views
- Tại màn hình này, scroll đến khi tìm được item có text là "Tabs"
- Nhấn vào item "Tabs" ở bước 3.
Ta dùng phương thức scrollTo(String text) để cuộn cho đến khi tìm được item có text tương ứng.
@Test
public void ScrollToText() throws InterruptedException {
//Scroll till element which contains "Views" text If It Is not visible on screen.
driver.scrollTo("Views");
// Click on Views/.
driver.findElement(By.name("Views")).click();
System.out.println("Scrolling has been started to find text -> Tabs.");
// Scroll till element which contains Tabs text.
driver.scrollTo("Tabs");
System.out.println("Tabs text has been found and now clicking on It.");
// Click on Tabs.
driver.findElement(By.name("Tabs")).click();
}
Scroll ngang
Thao tác cần thực hiện:
- Mở API Demos app
- Chọn Views-> Tabs -> 5. Scrollable
- Tại màn hình này, scroll ngang để tìm "Tab 11"
- Nhấn vào item "Tab 11" ở bước 3.
Ta dùng phương thức Swipe từ phải qua trái, từ tọa độ startX đến endX, với tọa độ YCoordinates không đổi
Get tọa độ giữa lưới tab (YCoordinates):
- Capture screenshot màn hình 5. Scrollable bằng app Uiautomatorviewer
- Di chuyển chuột vào giữa lưới tab
- Lây tọa độ Y theo ảnh dưới đây (YCoordinates = 150)
Get tọa độ startX và endX:
size = driver.manage().window().getSize();
//Find swipe start and end point from screen's with and height.
//Find startx point which is at right side of screen.
int startx = (int) (size.width * 0.70);
//Find endx point which is at left side of screen.
int endx = (int) (size.width * 0.30);
Tọa độ X ở trên tương ứng với case scroll từ phải qua trái, nếu muốn scroll ngược lại, ta đổi startX vs endX cho nhau.
Thực hiện scroll ngang với tọa độ X, Y đã get. Hàm ScrollTabs():
//Swipe tabs from Right to Left.
driver.swipe(startx, YCoordinates, endx, YCoordinates, 3000);
}
Lặp lại thao tác scroll ngang, cho đến khi tìm được "Tab 11":
//Used for loop to scroll tabs until Tab 11 displayed.
for(int i=0; i<=10; i++){
//Set implicit wait to 2 seconds for fast horizontal scrolling.
driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
if(driver.findElements(By.name("Tab 11")).size()!= 0){
//If Tab 11 Is displayed then click on It.
System.out.println("Tab 11 has been found and now clicking on It.");
driver.findElement(By.name("Tab 11")).click();
break;
}else{
//If Tab 11 Is not displayed then scroll tabs from right to left direction by calling ScrollTabs() method.
ScrollTabs();
}
---Hết phần 4---
Tài liệu tham khảo: http://www.software-testing-tutorials-automation.com/2015/10/appium-tutorials-part-2.html
All rights reserved