1 package androidtest
.tests
;
4 import java
.io
.IOException
;
6 import java
.text
.SimpleDateFormat
;
7 import java
.util
.Calendar
;
9 import java
.util
.concurrent
.TimeUnit
;
11 import org
.apache
.commons
.io
.FileUtils
;
12 import org
.openqa
.selenium
.By
;
13 import org
.openqa
.selenium
.NoSuchElementException
;
14 import org
.openqa
.selenium
.OutputType
;
15 import org
.openqa
.selenium
.TimeoutException
;
16 import org
.openqa
.selenium
.WebDriver
;
17 import org
.openqa
.selenium
.remote
.Augmenter
;
18 import org
.openqa
.selenium
.remote
.DesiredCapabilities
;
19 import org
.openqa
.selenium
.remote
.RemoteWebDriver
;
20 import org
.openqa
.selenium
.support
.ui
.WebDriverWait
;
22 import io
.appium
.java_client
.android
.AndroidDriver
;
23 import io
.appium
.java_client
.android
.AndroidElement
;
24 import junit
.framework
.TestCase
;
26 public class Common
extends TestCase
{
28 static int waitingTime
= 30;
32 protected void setUpCommonDriver () throws Exception
{
33 File rootPath
= new File(System
.getProperty("user.dir"));
34 File appDir
= new File(rootPath
,"src/test/resources");
35 File app
= new File(appDir
,"ownCloud.apk");
36 DesiredCapabilities capabilities
= new DesiredCapabilities();
37 capabilities
.setCapability("platformName", "Android");
38 capabilities
.setCapability("deviceName", "Device");
39 capabilities
.setCapability("app", app
.getAbsolutePath());
40 capabilities
.setCapability("app-package", "com.owncloud.android");
41 capabilities
.setCapability("app-activity", ".ui.activity.FileDisplayActivity");
42 capabilities
.setCapability("appWaitActivity", ".authentication.AuthenticatorActivity");
43 driver
= new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities
);
44 driver
.manage().timeouts().implicitlyWait(waitingTime
, TimeUnit
.SECONDS
);
45 wait
= new WebDriverWait(driver
, waitingTime
, 50);
49 protected boolean waitForTextPresent(String text
, AndroidElement element
) throws InterruptedException
{
50 for (int second
= 0;;second
++){
51 if (second
>= waitingTime
)
54 if (text
.equals(element
.getText()))
56 } catch (Exception e
){
64 protected boolean isElementPresent(AndroidElement element
, By by
) {
66 element
.findElement(by
);
68 } catch (NoSuchElementException e
) {
73 protected boolean isElementPresent(AndroidElement element
) {
75 element
.isDisplayed();
76 } catch (NoSuchElementException e
){
82 //pollingTime in milliseconds
83 public static void waitTillElementIsNotPresent (AndroidElement element
, int pollingTime
) throws Exception
{
84 for (int time
= 0;;time
+= pollingTime
){
85 if (time
>= waitingTime
* 1000) //convert to milliseconds
88 element
.isDisplayed();
89 } catch (NoSuchElementException e
){
92 Thread
.sleep(pollingTime
);
94 throw new TimeoutException();
97 protected void takeScreenShotOnFailed (String testName
) throws IOException
{
98 File file
= ((RemoteWebDriver
) driver
).getScreenshotAs(OutputType
.FILE
);
99 SimpleDateFormat dt1
= new SimpleDateFormat("yyyy-MM-dd");
100 Date today
= Calendar
.getInstance().getTime();
101 String screenShotName
= "ScreenShots/" + dt1
.format(today
) + "/" + testName
+ ".png";
102 FileUtils
.copyFile(file
, new File(screenShotName
));