MainView.java 4.6 KB

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