Advertisement
crhoads1024

TestNGException: Cannot Instantiate Class....again

Feb 14th, 2016
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5 16.18 KB | None | 0 0
  1. package MyQ.testapk.Android.Tests;                                 
  2.                                    
  3. import io.appium.java_client.TouchAction;                                  
  4. import io.appium.java_client.android.AndroidDriver;                                
  5. import org.openqa.selenium.By;                                 
  6. import org.openqa.selenium.WebElement;                                 
  7. import org.openqa.selenium.remote.DesiredCapabilities;                                 
  8. import org.openqa.selenium.support.ui.ExpectedConditions;                                  
  9. import org.openqa.selenium.support.ui.WebDriverWait;                                   
  10. import org.testng.annotations.AfterMethod;                                 
  11. import org.testng.annotations.BeforeMethod;                                
  12. import org.testng.annotations.Test;                                
  13.                                    
  14. import java.io.File;                                   
  15. import java.net.MalformedURLException;                                 
  16. import java.net.URL;                                   
  17. import java.util.concurrent.TimeUnit;                                  
  18.                                    
  19.                                    
  20. public class WebElements {                                 
  21.                                    
  22.     AndroidDriver driver;                                  
  23.     //Sign In                                  
  24.     WebElement username = driver.findElement(By.id("com.testapk.myq.testapk:id/username"));                                
  25.     WebElement password = driver.findElement(By.id("com.testapk.myq.testapk:id/password"));                                
  26.     WebElement ppPicker = driver.findElement(By.id("android:id/title"));                                   
  27.     WebElement envPickerPreProd = driver.findElementById("com.testapk.myq.testapk:id/version_name");                                   
  28.     WebElement loginButton = driver.findElement(By.id("com.testapk.myq.testapk:id/login_button"));                                 
  29.                                        
  30.     //Device Gallery                                   
  31.     WebElement helpScreen = driver.findElement(By.id("com.testapk.myq.testapk:id/imageView"));                                 
  32.     WebElement deviceName = driver.findElement(By.id("com.testapk.myq.testapk:id/list_label"));                                
  33.     WebElement deviceIcon = driver.findElement(By.id("com.testapk.myq.testapk:id/device_icon"));                                   
  34.     WebElement deviceGallery = driver.findElement(By.id("com.testapk.myq.testapk:id/device_gallery"));                                 
  35.     WebElement deviceState = driver.findElement(By.id("com.testapk.myq.testapk:id/device_state"));                                 
  36.                                        
  37.     //Rules                                
  38.     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]"));                                 
  39.     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]"));                                 
  40.     WebElement ruleName = driver.findElement(By.xpath("com.testapk.myq.testapk:id/EditRuleFragment_EditText_RuleName"));                                   
  41.     WebElement ruleAddBtn = driver.findElement(By.id("com.testapk.myq.testapk:id/create_new_rule"));                                   
  42.     WebElement toggleAlertOnOpen = driver.findElement(By.id("com.testapk.myq.testapk:id/EditRule_Toggle_AlertOnOpen"));                                
  43.     WebElement toggleAlertOnClosed = driver.findElement(By.id("com.testapk.myq.testapk:id/EditRule_Toggle_AlertOffClosed"));                                   
  44.     WebElement toggleAlertNotifyAsSoonAsItHappens = driver.findElement(By.id("com.testapk.myq.testapk:id/EditRule_Toggle_AlertInstantly"));                                
  45.     WebElement togglePushNotification = driver.findElement(By.id("com.testapk.myq.testapk:id/EditRule_Toggle_SendPush"));                                  
  46.     WebElement toggleEmailNotification = driver.findElement(By.id("com.testapk.myq.testapk:id/EditRule_Toggle_SendEmail"));                                
  47.     WebElement ruleSaveButton = driver.findElement(By.id("com.testapk.myq.testapk:id/right_button"));                                  
  48.     WebElement toggleDeviceIsStopped = driver.findElement(By.id("com.testapk.myq.testapk:id/EditRule_Toggle_AlertStopped"));                                   
  49.     //WebElement                                   
  50.                                    
  51.                                    
  52.                                    
  53.     public void swipeLeft() {                                  
  54.                                    
  55.         driver.swipe(865,400,-25,50,1000);                                 
  56.                                    
  57.     }                                  
  58.                                    
  59.     public void swipeRight() {                                 
  60.         //driver.swipe(int start x, start y, end x, end y, duration);                                  
  61.         System.out.println("SwipeRight method intiated");                                  
  62.         driver.swipe(865,400,25,25,1000);                                  
  63.                                    
  64.     }                                  
  65.                                    
  66.     public void createImmediateRule(String desiredDeviceNameToApplyRule)                                   
  67.     {                                  
  68.                                    
  69.                                    
  70.                                    
  71.         //click menu button                                
  72.         menuBar.click();                                   
  73.                                    
  74.         //select rules                                 
  75.         ruleSelector.click();                                  
  76.                                    
  77.         //click add rule button                                
  78.         ruleAddBtn.click();                                
  79.                                    
  80.         //Select device from menu that rule will apply to.                                 
  81.         boolean found = false;                                 
  82.                                            
  83.         while (found = false)                                  
  84.         {                                  
  85.                                    
  86.                                    
  87.             String availableDeviceForRules = deviceName.getText().toUpperCase();                                   
  88.                                    
  89.                 if(availableDeviceForRules.equals(desiredDeviceNameToApplyRule))                                   
  90.                 {                                  
  91.                                    
  92.                     found = true;                                  
  93.                     deviceName.click();                                
  94.                     System.out.println("Desired device name has been found.");                                 
  95.                     break;                                 
  96.                                    
  97.                 }                                  
  98.                                    
  99.             else                                   
  100.                 {                                  
  101.                                    
  102.                     System.out.println("The device you specified was not found in the available devices under the ADD RULES menu.");                                   
  103.                                    
  104.                 }                                  
  105.                                    
  106.                                    
  107.             if(deviceName.equals("CDO") || (deviceName.equals("GATE")))                                
  108.             {                                  
  109.                                    
  110.                 ruleName.clear();                                  
  111.                 ruleName.sendKeys("Appium " + deviceName + " Immediate Rule");                                 
  112.                                    
  113.                 toggleAlertOnOpen.click();                                 
  114.                 toggleAlertOnClosed.click();                                   
  115.                 toggleDeviceIsStopped.click();                                 
  116.                 driver.scrollTo("Rule enabled");                                   
  117.                 togglePushNotification.click();                                
  118.                 toggleEmailNotification.click();                                   
  119.                 ruleSaveButton.click();                                
  120.                                    
  121.             }                                  
  122.                                    
  123.             else                                   
  124.             {                                  
  125.                                    
  126.                 toggleAlertOnOpen.click();                                 
  127.                 toggleAlertOnClosed.click();                                   
  128.                 driver.scrollTo("Rule enabled");                                   
  129.                 togglePushNotification.click();                                
  130.                 toggleEmailNotification.click();                                   
  131.                 ruleSaveButton.click();                                
  132.                 WebDriverWait wait = new WebDriverWait(driver, 100);                                   
  133.                 wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("com.testapk.myq.testapk:id/device_gallery")));                                 
  134.                                    
  135.             }                                  
  136.                                    
  137.         }                                  
  138.                                    
  139.     }                                  
  140.                                    
  141.     public void createDelayedRule(String desiredDeviceNameToApplyRule)                                 
  142.     {                                  
  143.         //click menu button                                
  144.         menuBar.click();                                   
  145.                                    
  146.         //select rules                                 
  147.         ruleSelector.click();                                  
  148.                                    
  149.         //click add rule button                                
  150.         ruleAddBtn.click();                                
  151.                                    
  152.         //Select device from menu that rule will apply to.                                 
  153.         boolean found = false;                                 
  154.                                            
  155.         while (!found)                                 
  156.         {                                  
  157.                                    
  158.                                    
  159.             String availableDeviceForRules = deviceName.getText().toUpperCase();                                   
  160.                                    
  161.             if(availableDeviceForRules.equals(desiredDeviceNameToApplyRule))                                   
  162.             {                                  
  163.                                    
  164.                 found = true;                                  
  165.                 deviceName.click();                                
  166.                 System.out.println("Desired device name has been found.");                                 
  167.                 break;                                 
  168.                                    
  169.             }                                  
  170.                                    
  171.             else                                   
  172.             {                                  
  173.                                    
  174.                 System.out.println("The device you specified was not found in the available devices under the ADD RULES menu.");                                   
  175.                                    
  176.             }                                  
  177.                                    
  178.                                    
  179.             if(deviceName.equals("CDO") || (deviceName.equals("GATE")))                                
  180.             {                                  
  181.                                    
  182.                 ruleName.clear();                                  
  183.                 ruleName.sendKeys("Appium " + deviceName + " Delayed Rule");                                   
  184.                                    
  185.                 toggleAlertOnOpen.click();                                 
  186.                 toggleAlertOnClosed.click();                                   
  187.                 toggleDeviceIsStopped.click();                                 
  188.                 toggleAlertNotifyAsSoonAsItHappens.click();                                
  189.                                    
  190.                                    
  191.                                    
  192.                 driver.scrollTo("Rule enabled");                                   
  193.                 togglePushNotification.click();                                
  194.                 toggleEmailNotification.click();                                   
  195.                 ruleSaveButton.click();                                
  196.                                    
  197.             }                                  
  198.                                    
  199.             else                                   
  200.             {                                  
  201.                                    
  202.                 toggleAlertOnOpen.click();                                 
  203.                 toggleAlertOnClosed.click();                                   
  204.                 driver.scrollTo("Rule enabled");                                   
  205.                 togglePushNotification.click();                                
  206.                 toggleEmailNotification.click();                                   
  207.                 ruleSaveButton.click();                                
  208.                 WebDriverWait wait = new WebDriverWait(driver, 100);                                   
  209.                 wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("com.testapk.myq.testapk:id/device_gallery")));                                 
  210.             }                                  
  211.                                    
  212.         }                                  
  213.                                    
  214.     }                                  
  215.                                    
  216.                                    
  217.     @BeforeMethod                                  
  218.     public void setUp() throws MalformedURLException {                                 
  219.                                    
  220.                                    
  221.         DesiredCapabilities caps = new DesiredCapabilities();                                  
  222.         File app = new File(System.getProperty("user.dir") + "//Android_app//testapk_3.4_30177.apk");                                  
  223.         caps.setCapability("deviceName", "SAMSUNG-SM-G900A");                                  
  224.         caps.setCapability("platformVersion", "5.1.1");                                
  225.         caps.setCapability("platformName", "Android");                                 
  226.         caps.setCapability("app", app.getAbsolutePath());                                  
  227.         driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), caps);                                 
  228.         driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);                                
  229.                                    
  230.         //Wait for password box to be visible before continuing                                
  231.         WebDriverWait wait = new WebDriverWait(driver, 10);                                
  232.         wait.until(ExpectedConditions.elementToBeClickable((By) password));                                
  233.                                    
  234.                                    
  235.         //Enters the username                                  
  236.                                    
  237.         username.clear();                                  
  238.         username.sendKeys("ranorextestbench+1@gmail.com");                                 
  239.                                    
  240.         //Enters the password                                  
  241.                                    
  242.         password.clear();                                  
  243.         password.sendKeys("Test123a");                                 
  244.                                    
  245.         //Removes the softkeyboard from display                                
  246.         driver.navigate().back();                                  
  247.                                    
  248.         //Selects the environment picker                                   
  249.         TouchAction longPress = new TouchAction(driver);                                   
  250.                                    
  251.         longPress.longPress(envPickerPreProd).perform();                                   
  252.                                    
  253.                                    
  254.         ppPicker.click();                                  
  255.                                    
  256.         //Clicks the login button                                  
  257.                                    
  258.         loginButton.click();                                   
  259.                                    
  260.                                    
  261.                                    
  262.         //checks for and clears Help Overlay                                   
  263.         if (helpScreen.isDisplayed())                                  
  264.         {                                  
  265.             helpScreen.click();                                
  266.                                    
  267.         }                                  
  268.                                    
  269.         else                                   
  270.         {                                  
  271.             wait.until(ExpectedConditions.presenceOfElementLocated((By) deviceGallery));                                   
  272.         }                                  
  273.                                    
  274.         wait.until(ExpectedConditions.visibilityOfElementLocated((By) deviceGallery));                                 
  275.                                    
  276.     }                                  
  277.                                    
  278.                                    
  279.                                    
  280.                                    
  281.                                    
  282.                                    
  283.     @Test                                  
  284.     public void actuateDevice() throws InterruptedException {                                  
  285.                                    
  286.                 if(deviceState.getText().toUpperCase().contains("OPEN")) {                                 
  287.                                    
  288.                     deviceIcon.click();                                
  289.                                    
  290.                     System.out.println("Waiting for device to Close or turn off.");                                
  291.                                    
  292.                                    
  293.                     WebDriverWait wait = new WebDriverWait(driver, 100);                                   
  294.                     wait.until(ExpectedConditions.textToBePresentInElement(deviceState, "Closed for"));                                
  295.                                    
  296.                     System.out.println("The device successfully closed or turned off.");                                   
  297.                 }                                  
  298.                                    
  299.                 else if(deviceState.getText().toUpperCase().contains("CLOSED")){                                   
  300.                                    
  301.                     deviceIcon.click();                                
  302.                                    
  303.                     System.out.println("Waiting for device to Open or turn on.");                                  
  304.                                    
  305.                     WebDriverWait wait = new WebDriverWait(driver, 100);                                   
  306.                     wait.until(ExpectedConditions.textToBePresentInElement(deviceState, "Open for"));                                  
  307.                                    
  308.                     System.out.println("The device successfully opened or turned on.");                                
  309.                 }                                  
  310.     }                              
  311.                                    
  312.         @AfterMethod                                   
  313.         public void tearDown ()throws InterruptedException {                                   
  314.             Thread.sleep(5000);                                
  315.             driver.quit();                                 
  316.         }                                  
  317.     }                                  
  318.                                    
  319. ************************************CONSOLE OUTPUT****************************************                                 
  320. org.testng.TestNGException:                                    
  321. Cannot instantiate class MyQ.testapk.Android.Tests.WebElements                                 
  322.     at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:37)                            
  323.     at org.testng.internal.ClassHelper.createInstance1(ClassHelper.java:372)                               
  324.     at org.testng.internal.ClassHelper.createInstance(ClassHelper.java:284)                            
  325.     at org.testng.internal.ClassImpl.getDefaultInstance(ClassImpl.java:109)                            
  326.     at org.testng.internal.ClassImpl.getInstances(ClassImpl.java:181)                              
  327.     at org.testng.internal.TestNGClassFinder.<init>(TestNGClassFinder.java:120)                            
  328.     at org.testng.TestRunner.initMethods(TestRunner.java:402)                              
  329.     at org.testng.TestRunner.init(TestRunner.java:228)                             
  330.     at org.testng.TestRunner.init(TestRunner.java:198)                             
  331.     at org.testng.TestRunner.<init>(TestRunner.java:147)                               
  332.     at org.testng.SuiteRunner$DefaultTestRunnerFactory.newTestRunner(SuiteRunner.java:525)                             
  333.     at org.testng.SuiteRunner.init(SuiteRunner.java:156)                               
  334.     at org.testng.SuiteRunner.<init>(SuiteRunner.java:110)                             
  335.     at org.testng.TestNG.createSuiteRunner(TestNG.java:1235)                               
  336.     at org.testng.TestNG.createSuiteRunners(TestNG.java:1222)                              
  337.     at org.testng.TestNG.runSuitesLocally(TestNG.java:1074)                            
  338.     at org.testng.TestNG.run(TestNG.java:999)                              
  339.     at org.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:72)                               
  340.     at org.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:122)                               
  341.     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)                             
  342.     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)                               
  343.     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)                               
  344.     at java.lang.reflect.Method.invoke(Method.java:606)                            
  345.     at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)                            
  346. Caused by: java.lang.reflect.InvocationTargetException                                 
  347.     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)                               
  348.     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)                            
  349.     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)                            
  350.     at java.lang.reflect.Constructor.newInstance(Constructor.java:526)                             
  351.     at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:28)                            
  352.     ... 23 more                            
  353. Caused by: java.lang.NullPointerException                                  
  354.     at MyQ.testapk.Android.Tests.WebElements.<init>(WebElements.java:24)                               
  355.     ... 28 more                            
  356.                                    
  357. Process finished with exit code 0                                  
  358. Empty test suite.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement