0c28bf09acffcb7489b49fd57562707e946da7ce
[pub/Android/ownCloud.git] / automationTest / src / test / java / androidtest / models / MainView.java
1 package androidtest.models;
2
3 import java.util.List;
4
5 import io.appium.java_client.android.AndroidDriver;
6 import io.appium.java_client.android.AndroidElement;
7 import io.appium.java_client.android.AndroidKeyCode;
8 import io.appium.java_client.pagefactory.AndroidFindBy;
9 import io.appium.java_client.pagefactory.AppiumFieldDecorator;
10
11 import org.openqa.selenium.NoSuchElementException;
12 import org.openqa.selenium.support.CacheLookup;
13 import org.openqa.selenium.support.PageFactory;
14
15 import org.openqa.selenium.Point;
16 import androidtest.actions.Actions;
17
18 public class MainView {
19 final AndroidDriver driver;
20
21 @AndroidFindBy(uiAutomator = "new UiSelector().description(\"More options\")")
22 private AndroidElement menuButton;
23
24 @CacheLookup
25 @AndroidFindBy(id = "com.owncloud.android:id/list_root")
26 private AndroidElement filesLayout;
27
28 @CacheLookup
29 @AndroidFindBy(uiAutomator = "new UiSelector().resourceId(\"android:id/action_bar_title\")")
30 private AndroidElement titleText;
31
32 @AndroidFindBy(id = "android:id/progress_circular")
33 private AndroidElement progressCircular;
34
35 @CacheLookup
36 @AndroidFindBy(uiAutomator = "new UiSelector().description(\"New folder\")")
37 private AndroidElement newFolderButton;
38
39 @CacheLookup
40 @AndroidFindBy(uiAutomator = "new UiSelector().description(\"Upload\")")
41 private AndroidElement uploadButton;
42
43 private AndroidElement waitAMomentText;
44
45 @AndroidFindBy(id = "com.owncloud.android:id/ListItemLayout")
46 private List<AndroidElement> listItemLayout;
47
48 @AndroidFindBy(id = "com.owncloud.android:id/list_root")
49 private AndroidElement listRootLayout;
50
51 @AndroidFindBy(name = "Files")
52 private AndroidElement filesElementUploadFile;
53
54 @CacheLookup
55 @AndroidFindBy(uiAutomator = "new UiSelector().description(\"List Layout\")")
56 private AndroidElement listLayout;
57
58 private AndroidElement fileElement;
59
60 private AndroidElement fileElementLayout;
61
62 private static String localFileIndicator = "com.owncloud.android:id/localFileIndicator";
63 private static String favoriteFileIndicator = "com.owncloud.android:id/favoriteIcon";
64
65
66 public MainView (AndroidDriver driver) {
67 this.driver = driver;
68 PageFactory.initElements(new AppiumFieldDecorator(driver), this);
69 }
70
71 public MenuList clickOnMenuButton () {
72 //if the menu option is not in the actionBar, it is opening again
73 try {
74 menuButton.click();
75 } catch (NoSuchElementException e){
76 driver.sendKeyEvent(AndroidKeyCode.MENU);
77 }
78 MenuList menuList = new MenuList (driver);
79 return menuList;
80 }
81
82 public SettingsView getSettingsView () {
83 SettingsView settingsView = new SettingsView(driver);
84 return settingsView;
85 }
86
87 public NewFolderPopUp clickOnNewFolderButton () {
88 newFolderButton.click();
89 NewFolderPopUp newFolderPopUp = new NewFolderPopUp(driver);
90 return newFolderPopUp;
91 }
92
93 public void clickOnUploadButton () {
94 uploadButton.click();
95 }
96
97 public FilesView clickOnFilesElementUploadFile () {
98 filesElementUploadFile.click();
99 FilesView filesView = new FilesView(driver);
100 return filesView;
101 }
102
103 public AndroidElement getTitleTextElement () {
104 return titleText;
105 }
106
107 public AndroidElement getUploadButton () {
108 return uploadButton;
109 }
110
111 public AndroidElement getWaitAMomentTextElement () {
112 return waitAMomentText;
113 }
114
115 public AndroidElement getListRootElement () {
116 return listRootLayout;
117 }
118
119 public List<AndroidElement> getListItemLayout () {
120 return listItemLayout;
121 }
122
123 public AndroidElement getFileElement () {
124 return fileElement;
125 }
126
127 public ElementMenuOptions longPressOnElement (String elementName) {
128 scrollTillFindElement(elementName).tap(1, 1000);
129 //fileElement.tap(1, 1000);
130 ElementMenuOptions menuOptions = new ElementMenuOptions(driver);
131 return menuOptions;
132 }
133
134 public AndroidElement scrollTillFindElement (String elementName) {
135 fileElement = Actions.scrollTillFindElement (elementName,filesLayout,driver);
136 try {
137 fileElementLayout = (AndroidElement) driver.findElementByAndroidUIAutomator("new UiSelector().description(\"LinearLayout-"+ elementName +"\")");
138 } catch (NoSuchElementException e) {
139 fileElementLayout = null;
140 }
141 return fileElement;
142 }
143
144 public AndroidElement getFileElementLayout () {
145 return fileElementLayout;
146 }
147
148 public AndroidElement getProgressCircular () {
149 return progressCircular;
150 }
151
152 public static String getLocalFileIndicator() {
153 return localFileIndicator;
154 }
155
156 public static String getFavoriteFileIndicator() {
157 return favoriteFileIndicator;
158 }
159
160 public void pulldownToRefresh () throws InterruptedException {
161 Point listLocation = listLayout.getLocation();
162 driver.swipe(listLocation.getX(),listLocation.getY(), listLocation.getX(),listLocation.getY()+1000, 5000);
163 }
164
165
166 }