1 package androidtest
.models
;
3 import java
.util
.HashMap
;
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
;
11 import org
.openqa
.selenium
.remote
.RemoteWebElement
;
12 import org
.openqa
.selenium
.support
.CacheLookup
;
13 import org
.openqa
.selenium
.support
.PageFactory
;
15 public class MainView
{
16 final AndroidDriver driver
;
19 @AndroidFindBy(uiAutomator
= "new UiSelector().description(\"More options\")")
20 private AndroidElement menuButton
;
23 @AndroidFindBy(id
= "com.owncloud.android:id/list_root")
24 private AndroidElement filesLayout
;
27 @AndroidFindBy(uiAutomator
= "new UiSelector().resourceId(\"android:id/action_bar_title\")")
28 private AndroidElement titleText
;
30 @AndroidFindBy(name
= "Settings")
31 private AndroidElement settingsButton
;
34 @AndroidFindBy(uiAutomator
= "new UiSelector().description(\"New folder\")")
35 private AndroidElement newFolderButton
;
38 @AndroidFindBy(uiAutomator
= "new UiSelector().description(\"Upload\")")
39 private AndroidElement uploadButton
;
41 @AndroidFindBy(uiAutomator
= "new UiSelector().resourceId(\"com.owncloud.android:id/user_input\")")
42 private AndroidElement newFolderNameField
;
44 @AndroidFindBy(uiAutomator
= "new UiSelector().resourceId(\"android:id/button1\")")
45 private AndroidElement newFolderOkButton
;
47 private AndroidElement waitAMomentText
;
49 @AndroidFindBy(id
= "com.owncloud.android:id/ListItemLayout")
50 private List
<AndroidElement
> listItemLayout
;
52 @AndroidFindBy(id
= "com.owncloud.android:id/list_root")
53 private AndroidElement listRootLayout
;
55 @AndroidFindBy(name
= "Remove")
56 private AndroidElement removeFileElement
;
58 @AndroidFindBy(name
= "Details")
59 private AndroidElement detailsFileElement
;
61 @AndroidFindBy(name
= "Remote and local")
62 private AndroidElement remoteAndLocalButton
;
64 @AndroidFindBy(name
= "Files")
65 private AndroidElement filesElementUploadFile
;
67 private AndroidElement fileElement
;
69 private AndroidElement fileElementLayout
;
72 public MainView (AndroidDriver driver
) {
74 PageFactory
.initElements(new AppiumFieldDecorator(driver
), this);
77 public void clickOnMenuButton () {
78 //TODO. DETECT WHEN HAPPENS WHEN THERE IS NOT BUTTON IN THE TOPBAR
79 //if(menuButton.exists()){
82 //Thread.sleep(10000);
83 //getUiDevice().pressMenu();
88 public SettingsView
clickOnSettingsButton () {
89 settingsButton
.click();
90 SettingsView settingsView
= new SettingsView(driver
);
94 public SettingsView
getSettingsView () {
95 SettingsView settingsView
= new SettingsView(driver
);
99 public void clickOnNewFolderButton () {
100 newFolderButton
.click();
103 public void clickOnRemoveFileElement () {
104 removeFileElement
.click();
107 public AppDetailsView
clickOnDetailsFileElement () {
108 detailsFileElement
.click();
109 AppDetailsView appDetailsView
= new AppDetailsView(driver
);
110 return appDetailsView
;
113 public void typeNewFolderName (String newFolderName
) {
114 newFolderNameField
.clear();
115 newFolderNameField
.sendKeys(newFolderName
);
116 driver
.sendKeyEvent(android
.view
.KeyEvent
.KEYCODE_BACK
);
119 public void clickOnNewFolderOkButton () {
120 newFolderOkButton
.click();
121 waitAMomentText
= (AndroidElement
) driver
.findElementByName("Wait a moment");
124 public void clickOnRemoteAndLocalButton () {
125 remoteAndLocalButton
.click();
126 waitAMomentText
= (AndroidElement
) driver
.findElementByName("Wait a moment");
129 public void clickOnUploadButton () {
130 uploadButton
.click();
133 public FilesView
clickOnFilesElementUploadFile () {
134 filesElementUploadFile
.click();
135 FilesView filesView
= new FilesView(driver
);
139 public AndroidElement
getTitleTextElement () {
143 public AndroidElement
getWaitAMomentTextElement () {
144 return waitAMomentText
;
147 public AndroidElement
getListRootElement () {
148 return listRootLayout
;
151 public List
<AndroidElement
> getListItemLayout () {
152 return listItemLayout
;
155 public AndroidElement
getFileElement () {
159 public void tapOnFileElement (String fileName
) {
160 scrollTillFindElement(fileName
);
161 fileElement
.tap(1, 1000);
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
);
171 fileElement
= (AndroidElement
) driver
.findElementByName(fileName
);
172 fileElementLayout
= (AndroidElement
) driver
.findElementByAndroidUIAutomator("new UiSelector().description(\"LinearLayout-"+ fileName
+"\")");
176 public AndroidElement
getFileElementLayout () {
177 return fileElementLayout
;