Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package MyQ.testapk.Android.Tests;
- import io.appium.java_client.TouchAction;
- import io.appium.java_client.android.AndroidDriver;
- import org.openqa.selenium.By;
- import org.openqa.selenium.WebElement;
- import org.openqa.selenium.remote.DesiredCapabilities;
- import org.openqa.selenium.support.ui.ExpectedConditions;
- import org.openqa.selenium.support.ui.WebDriverWait;
- import org.testng.annotations.AfterMethod;
- import org.testng.annotations.BeforeMethod;
- import org.testng.annotations.Test;
- import java.io.File;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.util.concurrent.TimeUnit;
- public class WebElements {
- AndroidDriver driver;
- //Sign In
- WebElement username = driver.findElement(By.id("com.testapk.myq.testapk:id/username"));
- WebElement password = driver.findElement(By.id("com.testapk.myq.testapk:id/password"));
- WebElement ppPicker = driver.findElement(By.id("android:id/title"));
- WebElement envPickerPreProd = driver.findElementById("com.testapk.myq.testapk:id/version_name");
- WebElement loginButton = driver.findElement(By.id("com.testapk.myq.testapk:id/login_button"));
- //Device Gallery
- WebElement helpScreen = driver.findElement(By.id("com.testapk.myq.testapk:id/imageView"));
- WebElement deviceName = driver.findElement(By.id("com.testapk.myq.testapk:id/list_label"));
- WebElement deviceIcon = driver.findElement(By.id("com.testapk.myq.testapk:id/device_icon"));
- WebElement deviceGallery = driver.findElement(By.id("com.testapk.myq.testapk:id/device_gallery"));
- WebElement deviceState = driver.findElement(By.id("com.testapk.myq.testapk:id/device_state"));
- //Rules
- WebElement ruleSelector = driver.findElement(By.xpath("//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.view.View[1]/android.widget.FrameLayout[2]/android.support.v4.widget.DrawerLayout[1]/android.widget.ListView[1]/android.widget.RelativeLayout[3]"));
- WebElement menuBar = driver.findElement(By.xpath("//android.widget.LinearLayout[1]/android.widget.FrameLayout[1]/android.view.View[1]/android.widget.FrameLayout[1]/android.view.View[1]/android.widget.ImageButton[1]"));
- WebElement ruleName = driver.findElement(By.xpath("com.testapk.myq.testapk:id/EditRuleFragment_EditText_RuleName"));
- WebElement ruleAddBtn = driver.findElement(By.id("com.testapk.myq.testapk:id/create_new_rule"));
- WebElement toggleAlertOnOpen = driver.findElement(By.id("com.testapk.myq.testapk:id/EditRule_Toggle_AlertOnOpen"));
- WebElement toggleAlertOnClosed = driver.findElement(By.id("com.testapk.myq.testapk:id/EditRule_Toggle_AlertOffClosed"));
- WebElement toggleAlertNotifyAsSoonAsItHappens = driver.findElement(By.id("com.testapk.myq.testapk:id/EditRule_Toggle_AlertInstantly"));
- WebElement togglePushNotification = driver.findElement(By.id("com.testapk.myq.testapk:id/EditRule_Toggle_SendPush"));
- WebElement toggleEmailNotification = driver.findElement(By.id("com.testapk.myq.testapk:id/EditRule_Toggle_SendEmail"));
- WebElement ruleSaveButton = driver.findElement(By.id("com.testapk.myq.testapk:id/right_button"));
- WebElement toggleDeviceIsStopped = driver.findElement(By.id("com.testapk.myq.testapk:id/EditRule_Toggle_AlertStopped"));
- //WebElement
- public void swipeLeft() {
- driver.swipe(865,400,-25,50,1000);
- }
- public void swipeRight() {
- //driver.swipe(int start x, start y, end x, end y, duration);
- System.out.println("SwipeRight method intiated");
- driver.swipe(865,400,25,25,1000);
- }
- public void createImmediateRule(String desiredDeviceNameToApplyRule)
- {
- //click menu button
- menuBar.click();
- //select rules
- ruleSelector.click();
- //click add rule button
- ruleAddBtn.click();
- //Select device from menu that rule will apply to.
- boolean found = false;
- while (found = false)
- {
- String availableDeviceForRules = deviceName.getText().toUpperCase();
- if(availableDeviceForRules.equals(desiredDeviceNameToApplyRule))
- {
- found = true;
- deviceName.click();
- System.out.println("Desired device name has been found.");
- break;
- }
- else
- {
- System.out.println("The device you specified was not found in the available devices under the ADD RULES menu.");
- }
- if(deviceName.equals("CDO") || (deviceName.equals("GATE")))
- {
- ruleName.clear();
- ruleName.sendKeys("Appium " + deviceName + " Immediate Rule");
- toggleAlertOnOpen.click();
- toggleAlertOnClosed.click();
- toggleDeviceIsStopped.click();
- driver.scrollTo("Rule enabled");
- togglePushNotification.click();
- toggleEmailNotification.click();
- ruleSaveButton.click();
- }
- else
- {
- toggleAlertOnOpen.click();
- toggleAlertOnClosed.click();
- driver.scrollTo("Rule enabled");
- togglePushNotification.click();
- toggleEmailNotification.click();
- ruleSaveButton.click();
- WebDriverWait wait = new WebDriverWait(driver, 100);
- wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("com.testapk.myq.testapk:id/device_gallery")));
- }
- }
- }
- public void createDelayedRule(String desiredDeviceNameToApplyRule)
- {
- //click menu button
- menuBar.click();
- //select rules
- ruleSelector.click();
- //click add rule button
- ruleAddBtn.click();
- //Select device from menu that rule will apply to.
- boolean found = false;
- while (!found)
- {
- String availableDeviceForRules = deviceName.getText().toUpperCase();
- if(availableDeviceForRules.equals(desiredDeviceNameToApplyRule))
- {
- found = true;
- deviceName.click();
- System.out.println("Desired device name has been found.");
- break;
- }
- else
- {
- System.out.println("The device you specified was not found in the available devices under the ADD RULES menu.");
- }
- if(deviceName.equals("CDO") || (deviceName.equals("GATE")))
- {
- ruleName.clear();
- ruleName.sendKeys("Appium " + deviceName + " Delayed Rule");
- toggleAlertOnOpen.click();
- toggleAlertOnClosed.click();
- toggleDeviceIsStopped.click();
- toggleAlertNotifyAsSoonAsItHappens.click();
- driver.scrollTo("Rule enabled");
- togglePushNotification.click();
- toggleEmailNotification.click();
- ruleSaveButton.click();
- }
- else
- {
- toggleAlertOnOpen.click();
- toggleAlertOnClosed.click();
- driver.scrollTo("Rule enabled");
- togglePushNotification.click();
- toggleEmailNotification.click();
- ruleSaveButton.click();
- WebDriverWait wait = new WebDriverWait(driver, 100);
- wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("com.testapk.myq.testapk:id/device_gallery")));
- }
- }
- }
- @BeforeMethod
- public void setUp() throws MalformedURLException {
- DesiredCapabilities caps = new DesiredCapabilities();
- File app = new File(System.getProperty("user.dir") + "//Android_app//testapk_3.4_30177.apk");
- caps.setCapability("deviceName", "SAMSUNG-SM-G900A");
- caps.setCapability("platformVersion", "5.1.1");
- caps.setCapability("platformName", "Android");
- caps.setCapability("app", app.getAbsolutePath());
- driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), caps);
- driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);
- //Wait for password box to be visible before continuing
- WebDriverWait wait = new WebDriverWait(driver, 10);
- wait.until(ExpectedConditions.elementToBeClickable((By) password));
- //Enters the username
- username.clear();
- username.sendKeys("ranorextestbench+1@gmail.com");
- //Enters the password
- password.clear();
- password.sendKeys("Test123a");
- //Removes the softkeyboard from display
- driver.navigate().back();
- //Selects the environment picker
- TouchAction longPress = new TouchAction(driver);
- longPress.longPress(envPickerPreProd).perform();
- ppPicker.click();
- //Clicks the login button
- loginButton.click();
- //checks for and clears Help Overlay
- if (helpScreen.isDisplayed())
- {
- helpScreen.click();
- }
- else
- {
- wait.until(ExpectedConditions.presenceOfElementLocated((By) deviceGallery));
- }
- wait.until(ExpectedConditions.visibilityOfElementLocated((By) deviceGallery));
- }
- @Test
- public void actuateDevice() throws InterruptedException {
- if(deviceState.getText().toUpperCase().contains("OPEN")) {
- deviceIcon.click();
- System.out.println("Waiting for device to Close or turn off.");
- WebDriverWait wait = new WebDriverWait(driver, 100);
- wait.until(ExpectedConditions.textToBePresentInElement(deviceState, "Closed for"));
- System.out.println("The device successfully closed or turned off.");
- }
- else if(deviceState.getText().toUpperCase().contains("CLOSED")){
- deviceIcon.click();
- System.out.println("Waiting for device to Open or turn on.");
- WebDriverWait wait = new WebDriverWait(driver, 100);
- wait.until(ExpectedConditions.textToBePresentInElement(deviceState, "Open for"));
- System.out.println("The device successfully opened or turned on.");
- }
- }
- @AfterMethod
- public void tearDown ()throws InterruptedException {
- Thread.sleep(5000);
- driver.quit();
- }
- }
- ************************************CONSOLE OUTPUT****************************************
- org.testng.TestNGException:
- Cannot instantiate class MyQ.testapk.Android.Tests.WebElements
- at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:37)
- at org.testng.internal.ClassHelper.createInstance1(ClassHelper.java:372)
- at org.testng.internal.ClassHelper.createInstance(ClassHelper.java:284)
- at org.testng.internal.ClassImpl.getDefaultInstance(ClassImpl.java:109)
- at org.testng.internal.ClassImpl.getInstances(ClassImpl.java:181)
- at org.testng.internal.TestNGClassFinder.<init>(TestNGClassFinder.java:120)
- at org.testng.TestRunner.initMethods(TestRunner.java:402)
- at org.testng.TestRunner.init(TestRunner.java:228)
- at org.testng.TestRunner.init(TestRunner.java:198)
- at org.testng.TestRunner.<init>(TestRunner.java:147)
- at org.testng.SuiteRunner$DefaultTestRunnerFactory.newTestRunner(SuiteRunner.java:525)
- at org.testng.SuiteRunner.init(SuiteRunner.java:156)
- at org.testng.SuiteRunner.<init>(SuiteRunner.java:110)
- at org.testng.TestNG.createSuiteRunner(TestNG.java:1235)
- at org.testng.TestNG.createSuiteRunners(TestNG.java:1222)
- at org.testng.TestNG.runSuitesLocally(TestNG.java:1074)
- at org.testng.TestNG.run(TestNG.java:999)
- at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72)
- at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:122)
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
- at java.lang.reflect.Method.invoke(Method.java:606)
- at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)
- Caused by: java.lang.reflect.InvocationTargetException
- at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
- at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
- at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
- at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
- at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:28)
- ... 23 more
- Caused by: java.lang.NullPointerException
- at MyQ.testapk.Android.Tests.WebElements.<init>(WebElements.java:24)
- ... 28 more
- Process finished with exit code 0
- Empty test suite.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement