package androidtest.models; import java.util.HashMap; import java.util.List; import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.android.AndroidElement; import io.appium.java_client.pagefactory.AndroidFindBy; import io.appium.java_client.pagefactory.AppiumFieldDecorator; import org.openqa.selenium.remote.RemoteWebElement; import org.openqa.selenium.support.CacheLookup; import org.openqa.selenium.support.PageFactory; public class MainView { final AndroidDriver driver; @CacheLookup @AndroidFindBy(uiAutomator = "new UiSelector().description(\"More options\")") private AndroidElement menuButton; @CacheLookup @AndroidFindBy(id = "com.owncloud.android:id/list_root") private AndroidElement filesLayout; @CacheLookup @AndroidFindBy(uiAutomator = "new UiSelector().resourceId(\"android:id/action_bar_title\")") private AndroidElement titleText; @AndroidFindBy(name = "Settings") private AndroidElement settingsButton; @CacheLookup @AndroidFindBy(uiAutomator = "new UiSelector().description(\"New folder\")") private AndroidElement newFolderButton; @CacheLookup @AndroidFindBy(uiAutomator = "new UiSelector().description(\"Upload\")") private AndroidElement uploadButton; @AndroidFindBy(uiAutomator = "new UiSelector().resourceId(\"com.owncloud.android:id/user_input\")") private AndroidElement newFolderNameField; @AndroidFindBy(uiAutomator = "new UiSelector().resourceId(\"android:id/button1\")") private AndroidElement newFolderOkButton; private AndroidElement waitAMomentText; @AndroidFindBy(id = "com.owncloud.android:id/ListItemLayout") private List listItemLayout; @AndroidFindBy(id = "com.owncloud.android:id/list_root") private AndroidElement listRootLayout; @AndroidFindBy(name = "Remove") private AndroidElement removeFileElement; @AndroidFindBy(name = "Details") private AndroidElement detailsFileElement; @AndroidFindBy(name = "Remote and local") private AndroidElement remoteAndLocalButton; @AndroidFindBy(name = "Files") private AndroidElement filesElementUploadFile; private AndroidElement fileElement; private AndroidElement fileElementLayout; public MainView (AndroidDriver driver) { this.driver = driver; PageFactory.initElements(new AppiumFieldDecorator(driver), this); } public void clickOnMenuButton () { //TODO. DETECT WHEN HAPPENS WHEN THERE IS NOT BUTTON IN THE TOPBAR //if(menuButton.exists()){ //menuButton.click(); //}else{ //Thread.sleep(10000); //getUiDevice().pressMenu(); //} menuButton.click(); } public SettingsView clickOnSettingsButton () { settingsButton.click(); SettingsView settingsView = new SettingsView(driver); return settingsView; } public SettingsView getSettingsView () { SettingsView settingsView = new SettingsView(driver); return settingsView; } public void clickOnNewFolderButton () { newFolderButton.click(); } public void clickOnRemoveFileElement () { removeFileElement.click(); } public AppDetailsView clickOnDetailsFileElement () { detailsFileElement.click(); AppDetailsView appDetailsView = new AppDetailsView(driver); return appDetailsView; } public void typeNewFolderName (String newFolderName) { newFolderNameField.clear(); newFolderNameField.sendKeys(newFolderName); driver.sendKeyEvent(android.view.KeyEvent.KEYCODE_BACK); } public void clickOnNewFolderOkButton () { newFolderOkButton.click(); waitAMomentText = (AndroidElement) driver.findElementByName("Wait a moment"); } public void clickOnRemoteAndLocalButton () { remoteAndLocalButton.click(); waitAMomentText = (AndroidElement) driver.findElementByName("Wait a moment"); } public void clickOnUploadButton () { uploadButton.click(); } public FilesView clickOnFilesElementUploadFile () { filesElementUploadFile.click(); FilesView filesView = new FilesView(driver); return filesView; } public AndroidElement getTitleTextElement () { return titleText; } public AndroidElement getWaitAMomentTextElement () { return waitAMomentText; } public AndroidElement getListRootElement () { return listRootLayout; } public List getListItemLayout () { return listItemLayout; } public AndroidElement getFileElement () { return fileElement; } public void tapOnFileElement (String fileName) { scrollTillFindElement(fileName); fileElement.tap(1, 1000); } public AndroidElement scrollTillFindElement (String fileName) { HashMap scrollObject = new HashMap(); scrollObject.put("text", fileName); scrollObject.put("element", ( (RemoteWebElement) filesLayout).getId()); if(filesLayout.getAttribute("scrollable").equals("true")){ driver.executeScript("mobile: scrollTo", scrollObject); } fileElement = (AndroidElement) driver.findElementByName(fileName); fileElementLayout = (AndroidElement) driver.findElementByAndroidUIAutomator("new UiSelector().description(\"LinearLayout-"+ fileName +"\")"); return fileElement; } public AndroidElement getFileElementLayout () { return fileElementLayout; } }