1 package androidtest
.actions
;
3 import java
.util
.HashMap
;
5 import org
.openqa
.selenium
.NoSuchElementException
;
6 import org
.openqa
.selenium
.ScreenOrientation
;
7 import org
.openqa
.selenium
.remote
.RemoteWebElement
;
9 import io
.appium
.java_client
.android
.AndroidDriver
;
10 import io
.appium
.java_client
.android
.AndroidElement
;
12 import org
.openqa
.selenium
.support
.ui
.ExpectedConditions
;
13 import org
.openqa
.selenium
.support
.ui
.WebDriverWait
;
15 import androidtest
.models
.CertificatePopUp
;
16 import androidtest
.models
.ElementMenuOptions
;
17 import androidtest
.models
.FilesView
;
18 import androidtest
.models
.LoginForm
;
19 import androidtest
.models
.MainView
;
20 import androidtest
.models
.MenuList
;
21 import androidtest
.models
.NewFolderPopUp
;
22 import androidtest
.models
.RemoveConfirmationView
;
23 import androidtest
.models
.SettingsView
;
24 import androidtest
.models
.WaitAMomentPopUp
;
25 import androidtest
.tests
.Common
;
27 public class Actions
{
29 public static MainView
login(String url
, String user
, String password
, Boolean isTrusted
, AndroidDriver driver
) throws InterruptedException
{
30 LoginForm loginForm
= new LoginForm(driver
);
31 CertificatePopUp certificatePopUp
= loginForm
.typeHostUrl(url
);
33 WebDriverWait wait
= new WebDriverWait(driver
, 30);
34 //sometimes the certificate has been already accept and it doesn't appear again
36 wait
.until(ExpectedConditions
.visibilityOf(certificatePopUp
.getOkButtonElement()));
37 //we need to repaint the screen because of some element are misplaced
38 driver
.rotate(ScreenOrientation
.LANDSCAPE
);
39 driver
.rotate(ScreenOrientation
.PORTRAIT
);
40 certificatePopUp
.clickOnOkButton();
41 }catch (NoSuchElementException e
) {
46 loginForm
.typeUserName(user
);
47 loginForm
.typePassword(password
);
48 //TODO. Assert related to check the connection?
49 return loginForm
.clickOnConnectButton();
52 public static WaitAMomentPopUp
createFolder(String folderName
, MainView mainView
){
53 NewFolderPopUp newFolderPopUp
= mainView
.clickOnNewFolderButton();
54 newFolderPopUp
.typeNewFolderName(folderName
);
55 WaitAMomentPopUp waitAMomentPopUp
= newFolderPopUp
.clickOnNewFolderOkButton();
57 return waitAMomentPopUp
;
61 public static AndroidElement
scrollTillFindElement (String elementName
, AndroidElement element
, AndroidDriver driver
) {
62 AndroidElement fileElement
;
64 if(element
.getAttribute("scrollable").equals("true")){
65 HashMap
<String
, String
> scrollObject
= new HashMap
<String
, String
>();
66 scrollObject
.put("text", elementName
);
67 scrollObject
.put("element", ( (RemoteWebElement
) element
).getId());
68 driver
.executeScript("mobile: scrollTo", scrollObject
);
71 fileElement
= (AndroidElement
) driver
.findElementByName(elementName
);
72 } catch (NoSuchElementException e
) {
79 public static void deleteAccount (MainView mainView
) {
80 MenuList menulist
= mainView
.clickOnMenuButton();
81 SettingsView settingView
= menulist
.clickOnSettingsButton();
82 deleteAccount(settingView
);
85 public static void deleteAccount (SettingsView settingsView
) {
86 settingsView
.tapOnAccountElement(1, 1000);
87 settingsView
.clickOnDeleteAccountElement();
90 public static void clickOnMainLayout(AndroidDriver driver
){
91 driver
.tap(1, 0, 0, 1);
94 //TODO. convert deleteFodler and deleteFile in deleteElement
95 public static AndroidElement
deleteElement(String elementName
, MainView mainView
, AndroidDriver driver
) throws Exception
{
96 AndroidElement fileElement
;
97 WaitAMomentPopUp waitAMomentPopUp
;
99 //To open directly the "file list view" and we don't need to know in which view we are
100 driver
.startActivity("com.owncloud.android", ".ui.activity.FileDisplayActivity");
101 fileElement
= (AndroidElement
) driver
.findElementByName(elementName
);
102 ElementMenuOptions menuOptions
= mainView
.longPressOnElement(elementName
);
103 RemoveConfirmationView removeConfirmationView
= menuOptions
.clickOnRemove();;
104 waitAMomentPopUp
= removeConfirmationView
.clickOnRemoteAndLocalButton();
105 Common
.waitTillElementIsNotPresent(waitAMomentPopUp
.getWaitAMomentTextElement(), 100);
106 }catch(NoSuchElementException e
){
112 public static MainView
uploadFile(String elementName
, MainView mainView
) throws InterruptedException
{
113 mainView
.clickOnUploadButton();
114 FilesView filesView
= mainView
.clickOnFilesElementUploadFile();
115 filesView
.clickOnFileName(elementName
);
116 MainView mainViewAfterUploadFile
= filesView
.clickOnUploadButton();
117 //TO DO. detect when the file is successfully uploaded
119 return mainViewAfterUploadFile
;