Merge branch 'develop' into automationTest
[pub/Android/ownCloud.git] / automationTest / src / test / java / androidtest / models / MainView.java
1 package androidtest.models;
2
3 import java.util.HashMap;
4 import java.util.List;
5
6 import io.appium.java_client.android.AndroidDriver;
7 import io.appium.java_client.android.AndroidElement;
8 import io.appium.java_client.pagefactory.AndroidFindBy;
9 import io.appium.java_client.pagefactory.AppiumFieldDecorator;
10
11 import org.openqa.selenium.remote.RemoteWebElement;
12 import org.openqa.selenium.support.CacheLookup;
13 import org.openqa.selenium.support.PageFactory;
14
15 public class MainView {
16 final AndroidDriver driver;
17
18 @CacheLookup
19 @AndroidFindBy(uiAutomator = "new UiSelector().description(\"More options\")")
20 private AndroidElement menuButton;
21
22 @CacheLookup
23 @AndroidFindBy(id = "com.owncloud.android:id/list_root")
24 private AndroidElement filesLayout;
25
26 @CacheLookup
27 @AndroidFindBy(uiAutomator = "new UiSelector().resourceId(\"android:id/action_bar_title\")")
28 private AndroidElement titleText;
29
30 @AndroidFindBy(name = "Settings")
31 private AndroidElement settingsButton;
32
33 @CacheLookup
34 @AndroidFindBy(uiAutomator = "new UiSelector().description(\"New folder\")")
35 private AndroidElement newFolderButton;
36
37 @CacheLookup
38 @AndroidFindBy(uiAutomator = "new UiSelector().description(\"Upload\")")
39 private AndroidElement uploadButton;
40
41 @AndroidFindBy(uiAutomator = "new UiSelector().resourceId(\"com.owncloud.android:id/user_input\")")
42 private AndroidElement newFolderNameField;
43
44 @AndroidFindBy(uiAutomator = "new UiSelector().resourceId(\"android:id/button1\")")
45 private AndroidElement newFolderOkButton;
46
47 private AndroidElement waitAMomentText;
48
49 @AndroidFindBy(id = "com.owncloud.android:id/ListItemLayout")
50 private List<AndroidElement> listItemLayout;
51
52 @AndroidFindBy(id = "com.owncloud.android:id/list_root")
53 private AndroidElement listRootLayout;
54
55 @AndroidFindBy(name = "Remove")
56 private AndroidElement removeFileElement;
57
58 @AndroidFindBy(name = "Details")
59 private AndroidElement detailsFileElement;
60
61 @AndroidFindBy(name = "Remote and local")
62 private AndroidElement remoteAndLocalButton;
63
64 @AndroidFindBy(name = "Files")
65 private AndroidElement filesElementUploadFile;
66
67 private AndroidElement fileElement;
68
69 private AndroidElement fileElementLayout;
70
71
72 public MainView (AndroidDriver driver) {
73 this.driver = driver;
74 PageFactory.initElements(new AppiumFieldDecorator(driver), this);
75 }
76
77 public void clickOnMenuButton () {
78 //TODO. DETECT WHEN HAPPENS WHEN THERE IS NOT BUTTON IN THE TOPBAR
79 //if(menuButton.exists()){
80 //menuButton.click();
81 //}else{
82 //Thread.sleep(10000);
83 //getUiDevice().pressMenu();
84 //}
85 menuButton.click();
86 }
87
88 public SettingsView clickOnSettingsButton () {
89 settingsButton.click();
90 SettingsView settingsView = new SettingsView(driver);
91 return settingsView;
92 }
93
94 public SettingsView getSettingsView () {
95 SettingsView settingsView = new SettingsView(driver);
96 return settingsView;
97 }
98
99 public void clickOnNewFolderButton () {
100 newFolderButton.click();
101 }
102
103 public void clickOnRemoveFileElement () {
104 removeFileElement.click();
105 }
106
107 public AppDetailsView clickOnDetailsFileElement () {
108 detailsFileElement.click();
109 AppDetailsView appDetailsView = new AppDetailsView(driver);
110 return appDetailsView;
111 }
112
113 public void typeNewFolderName (String newFolderName) {
114 newFolderNameField.clear();
115 newFolderNameField.sendKeys(newFolderName);
116 driver.sendKeyEvent(android.view.KeyEvent.KEYCODE_BACK);
117 }
118
119 public void clickOnNewFolderOkButton () {
120 newFolderOkButton.click();
121 waitAMomentText = (AndroidElement) driver.findElementByName("Wait a moment");
122 }
123
124 public void clickOnRemoteAndLocalButton () {
125 remoteAndLocalButton.click();
126 waitAMomentText = (AndroidElement) driver.findElementByName("Wait a moment");
127 }
128
129 public void clickOnUploadButton () {
130 uploadButton.click();
131 }
132
133 public FilesView clickOnFilesElementUploadFile () {
134 filesElementUploadFile.click();
135 FilesView filesView = new FilesView(driver);
136 return filesView;
137 }
138
139 public AndroidElement getTitleTextElement () {
140 return titleText;
141 }
142
143 public AndroidElement getWaitAMomentTextElement () {
144 return waitAMomentText;
145 }
146
147 public AndroidElement getListRootElement () {
148 return listRootLayout;
149 }
150
151 public List<AndroidElement> getListItemLayout () {
152 return listItemLayout;
153 }
154
155 public AndroidElement getFileElement () {
156 return fileElement;
157 }
158
159 public void tapOnFileElement (String fileName) {
160 scrollTillFindElement(fileName);
161 fileElement.tap(1, 1000);
162 }
163
164 public AndroidElement scrollTillFindElement (String fileName) {
165 HashMap<String, String> scrollObject = new HashMap<String, String>();
166 scrollObject.put("text", fileName);
167 scrollObject.put("element", ( (RemoteWebElement) filesLayout).getId());
168 if(filesLayout.getAttribute("scrollable").equals("true")){
169 driver.executeScript("mobile: scrollTo", scrollObject);
170 }
171 fileElement = (AndroidElement) driver.findElementByName(fileName);
172 fileElementLayout = (AndroidElement) driver.findElementByAndroidUIAutomator("new UiSelector().description(\"LinearLayout-"+ fileName +"\")");
173 return fileElement;
174 }
175
176 public AndroidElement getFileElementLayout () {
177 return fileElementLayout;
178 }
179 }