Common.java 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. package androidtest.tests;
  2. import java.io.File;
  3. import java.io.IOException;
  4. import java.net.URL;
  5. import java.text.SimpleDateFormat;
  6. import java.util.Calendar;
  7. import java.util.Date;
  8. import java.util.concurrent.TimeUnit;
  9. import org.apache.commons.io.FileUtils;
  10. import org.openqa.selenium.By;
  11. import org.openqa.selenium.NoSuchElementException;
  12. import org.openqa.selenium.OutputType;
  13. import org.openqa.selenium.TimeoutException;
  14. import org.openqa.selenium.WebDriver;
  15. import org.openqa.selenium.remote.Augmenter;
  16. import org.openqa.selenium.remote.DesiredCapabilities;
  17. import org.openqa.selenium.remote.RemoteWebDriver;
  18. import org.openqa.selenium.support.ui.WebDriverWait;
  19. import io.appium.java_client.android.AndroidDriver;
  20. import io.appium.java_client.android.AndroidElement;
  21. import junit.framework.TestCase;
  22. public class Common extends TestCase{
  23. AndroidDriver driver;
  24. static int waitingTime = 30;
  25. WebDriverWait wait;
  26. protected void setUpCommonDriver () throws Exception {
  27. File rootPath = new File(System.getProperty("user.dir"));
  28. File appDir = new File(rootPath,"src/test/resources");
  29. File app = new File(appDir,"ownCloud.apk");
  30. DesiredCapabilities capabilities = new DesiredCapabilities();
  31. capabilities.setCapability("platformName", "Android");
  32. capabilities.setCapability("deviceName", "Device");
  33. capabilities.setCapability("app", app.getAbsolutePath());
  34. capabilities.setCapability("app-package", "com.owncloud.android");
  35. capabilities.setCapability("app-activity", ".ui.activity.FileDisplayActivity");
  36. capabilities.setCapability("appWaitActivity", ".authentication.AuthenticatorActivity");
  37. driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
  38. driver.manage().timeouts().implicitlyWait(waitingTime, TimeUnit.SECONDS);
  39. wait = new WebDriverWait(driver, waitingTime, 50);
  40. }
  41. protected boolean waitForTextPresent(String text, AndroidElement element) throws InterruptedException{
  42. for (int second = 0;;second++){
  43. if (second >= waitingTime)
  44. return false;
  45. try{
  46. if (text.equals(element.getText()))
  47. break;
  48. } catch (Exception e){
  49. }
  50. Thread.sleep(1000);
  51. }
  52. return true;
  53. }
  54. protected boolean isElementPresent(AndroidElement element, By by) {
  55. try {
  56. element.findElement(by);
  57. return true;
  58. } catch (NoSuchElementException e) {
  59. return false;
  60. }
  61. }
  62. protected boolean isElementPresent(AndroidElement element) {
  63. try{
  64. element.isDisplayed();
  65. } catch (NoSuchElementException e){
  66. return false;
  67. }
  68. return true;
  69. }
  70. //pollingTime in milliseconds
  71. public static void waitTillElementIsNotPresent (AndroidElement element, int pollingTime) throws Exception {
  72. for (int time = 0;;time += pollingTime){
  73. if (time >= waitingTime * 1000) //convert to milliseconds
  74. break;
  75. try{
  76. element.isDisplayed();
  77. } catch (NoSuchElementException e){
  78. return;
  79. }
  80. Thread.sleep(pollingTime);
  81. }
  82. throw new TimeoutException();
  83. }
  84. protected void takeScreenShotOnFailed (String testName) throws IOException {
  85. File file = ((RemoteWebDriver) driver).getScreenshotAs(OutputType.FILE);
  86. SimpleDateFormat dt1 = new SimpleDateFormat("yyyy-MM-dd");
  87. Date today = Calendar.getInstance().getTime();
  88. String screenShotName = "ScreenShots/" + dt1.format(today) + "/" + testName + ".png";
  89. FileUtils.copyFile(file, new File(screenShotName));
  90. }
  91. }