2016-08-04 3 views
0

"packageName.pageName 클래스를 인스턴스화 할 수 없습니다."라는 메시지가 나타나 셀레늄에서 테스트 사례를 실행하려고합니다. 나는 많은 것을 시도했지만 내가 실수를하고있는 곳을 찾지 못했습니다.packageName.pageName 클래스를 인스턴스화 할 수 없습니다.

다음은 내 로그인 페이지

package detailsPkg_user; 

public class Login { 
    public static WebDriver driver; 
    String username = "userName"; 
    String password = "passWord"; 
    String baseurl = "http://mybusiness.com/login.aspx"; 
    WebDriverWait wait = new WebDriverWait(driver, 10); // 10 seconds 


public class Details { 
    @Test(priority = 0) 
    public void loginpage() { 

     System.setProperty("webdriver.chrome.driver","D:\\From H\\Selenium Package\\ChromeDriver\\chromedriver_win32\\chromedriver.exe"); 
     DesiredCapabilities capabilities = DesiredCapabilities.chrome(); 
     capabilities.setCapability("chrome.switches", Arrays.asList("--incognito")); 
     ChromeOptions options = new ChromeOptions(); 
     options.addArguments("--test-type"); 
     options.addArguments("--disable-extensions"); 
     capabilities.setCapability("chrome.binary","D:\\From H\\Selenium Package\\ChromeDriver\\chromedriver_win32\\chromedriver.exe"); 
     capabilities.setCapability(ChromeOptions.CAPABILITY, options); 

     driver = new ChromeDriver(capabilities); 
     driver.manage().deleteAllCookies(); 
     driver.manage().window().maximize(); 
     driver.get(baseurl); 


     WebElement username = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("UserName"))); 
     username.sendKeys(userName); 

     WebElement password = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("PassWord"))); 
     password.sendKeys(passWord); 

     WebElement button = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("ButtonClick"))); 
     button.click(); 

    } 

    // Selecting a date from date picker 
    @Test(priority = 1) 
    public void RecordSearch() { 
     WebElement calendar = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("CalendarId"))); 
     calendar.click(); 


     WebElement month = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("XPath"))); 
     month.click(); 


     WebElement day = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("XPath"))); 
     day.click(); 


     WebElement submit = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("Submit"))); 
     submit.click(); 


    } 

     driver.close(); 
} 

입니다 그리고 다음은 내가 프로젝트를 실행하려고하고있는 detailSearch 페이지 코드

package detailsPkg_user; 


import org.testng.annotations.Test; 
import java.util.Arrays; 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.chrome.ChromeDriver; 
import org.openqa.selenium.chrome.ChromeOptions; 
import org.openqa.selenium.remote.DesiredCapabilities; 
import org.openqa.selenium.support.ui.ExpectedConditions; 
import org.openqa.selenium.JavascriptExecutor; 



public class detailSearch extends Login { 

    @Test(priority = 2) 
    public void loginpageDetail() { 

     System.setProperty("webdriver.chrome.driver","D:\\From H\\Selenium Package\\ChromeDriver\\chromedriver_win32\\chromedriver.exe"); 
     DesiredCapabilities capabilities = DesiredCapabilities.chrome(); 
     capabilities.setCapability("chrome.switches", Arrays.asList("--incognito")); 
     ChromeOptions options = new ChromeOptions(); 
     options.addArguments("--test-type"); 
     options.addArguments("--disable-extensions"); 
     capabilities.setCapability("chrome.binary","D:\\From H\\Selenium Package\\ChromeDriver\\chromedriver_win32\\chromedriver.exe"); 
     capabilities.setCapability(ChromeOptions.CAPABILITY, options); 

     driver = new ChromeDriver(capabilities); 
     driver.manage().deleteAllCookies(); 
     driver.manage().window().maximize(); 
     driver.get(baseurl); 



     WebElement username = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("UserName"))); 
     username.sendKeys(userName); 

     WebElement password = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("Password"))); 
     password.sendKeys(passWord); 

     WebElement button = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("ButtonClick"))); 
     button.click(); 
    } 

    // Selecting and clicking DetailSearch menu 
    @Test(priority = 3) 
    public void detailSelect() {  
     WebElement detailMenu = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("XPath"))); 
     detailMenu.click(); 



     // Datepicker of "From" calendar 
     WebElement datepickerFrom = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("calendarId01"))); 
     datepickerFrom.click(); 


     WebElement monthPreviousFrom = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("leftarrow_calendar_NP']/img"))); 
     monthPreviousFrom.click(); 


     WebElement dayFirst = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("XPath"))); 
     dayFirst.click(); 


     // Datepicker of "To" calendar 
     WebElement datepickerTo = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("calendarId02"))); 
     datepickerTo.click(); 


     WebElement monthPreviousTo = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("leftarrow_calendar_NP']/img"))); 
     monthPreviousTo.click(); 


     WebElement monthLast = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("XPath"))); 
     monthLast.click(); 

    } 

     // Click "Submit" 
     WebElement submit = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("ctl00_contentMiddle_btnSearch"))); 
     submit.click(); 


     WebElement logout = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("XPath"))); 
     logout.click(); 

     driver.close(); 
    } 

} 

입니다. 콘솔에 다음 오류가 표시됩니다.

org.testng.TestNGException: 
Cannot instantiate class detailsPkg_user.detailSearch 
    at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:40) 
    at org.testng.internal.ClassHelper.createInstance1(ClassHelper.java:382) 
    at org.testng.internal.ClassHelper.createInstance(ClassHelper.java:295) 
    at org.testng.internal.ClassImpl.getDefaultInstance(ClassImpl.java:118) 
    at org.testng.internal.ClassImpl.getInstances(ClassImpl.java:183) 
    at org.testng.internal.TestNGClassFinder.<init>(TestNGClassFinder.java:128) 
    at org.testng.TestRunner.initMethods(TestRunner.java:416) 
    at org.testng.TestRunner.init(TestRunner.java:242) 
    at org.testng.TestRunner.init(TestRunner.java:212) 
    at org.testng.TestRunner.<init>(TestRunner.java:166) 
    at org.testng.remote.support.RemoteTestNG6_9_7$1.newTestRunner(RemoteTestNG6_9_7.java:26) 
    at org.testng.remote.support.RemoteTestNG6_9_7$DelegatingTestRunnerFactory.newTestRunner(RemoteTestNG6_9_7.java:59) 
    at org.testng.SuiteRunner$ProxyTestRunnerFactory.newTestRunner(SuiteRunner.java:587) 
    at org.testng.SuiteRunner.init(SuiteRunner.java:161) 
    at org.testng.SuiteRunner.<init>(SuiteRunner.java:114) 
    at org.testng.TestNG.createSuiteRunner(TestNG.java:1290) 
    at org.testng.TestNG.createSuiteRunners(TestNG.java:1277) 
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1131) 
    at org.testng.TestNG.run(TestNG.java:1048) 
    at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:126) 
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:152) 
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:57)Caused by: java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
    at java.lang.reflect.Constructor.newInstance(Unknown Source) 
    at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:29) 
    ... 21 more Caused by: java.lang.NullPointerException 
    at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:212) 
    at org.openqa.selenium.support.ui.FluentWait.<init>(FluentWait.java:102) 
    at org.openqa.selenium.support.ui.WebDriverWait.<init>(WebDriverWait.java:71) 
    at org.openqa.selenium.support.ui.WebDriverWait.<init>(WebDriverWait.java:45) 
    at detailsPkg_user.Login.<init>(Login.java:25) 
    at detailsPkg_user.detailSearch.<init>(CDRSearch.java:21) 
    ... 26 more 
+0

'Login.java'의 라인 25는 무엇입니까? –

+0

@ chiastic-security ... 빈 줄입니다. "WebDriverWait wait = new WebDriverWait (driver, 10); // 10 초"다음 줄에 그냥 – Arvind

+0

라인 25처럼 보이지 않는 코드가 누락되어 있습니까? – Josh

답변

1

이는 메소드에서 드라이버를 인스턴스화했기 때문입니다. 메서드에서 인스턴스화하려고하면 @BeforeSuite을 사용할 수 있습니다.

또한이 줄에 문제가 있습니다 WebDriverWait wait = new WebDriverWait(driver, 10);. 드라이버가 나중에 인스턴스화 될 때 null 드라이버로 wait 인스턴스를 생성했습니다.

나는 사람들이 왜 그렇게 복잡한 코드를 쓰는지 잘 모르겠습니다. 당신은 많은 complex.This이 문제를 해결할 것이라고 그것을하지 않고 동일한 달성 할 수 :

import org.testng.annotations.BeforeSuite; 
import org.testng.annotations.Test; 
import java.util.Arrays; 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.chrome.ChromeDriver; 
import org.openqa.selenium.chrome.ChromeOptions; 
import org.openqa.selenium.remote.DesiredCapabilities; 
import org.openqa.selenium.support.ui.ExpectedConditions; 

public class DetailSearch extends Login { 

    @BeforeSuite 
    public void instantiateDriver() { 
     System.setProperty("webdriver.chrome.driver","D:\\From H\\Selenium Package\\ChromeDriver\\chromedriver_win32\\chromedriver.exe"); 
     DesiredCapabilities capabilities = DesiredCapabilities.chrome(); 
     capabilities.setCapability("chrome.switches", Arrays.asList("--incognito")); 
     ChromeOptions options = new ChromeOptions(); 
     options.addArguments("--test-type"); 
     options.addArguments("--disable-extensions"); 
     capabilities.setCapability("chrome.binary","D:\\From H\\Selenium Package\\ChromeDriver\\chromedriver_win32\\chromedriver.exe"); 
     capabilities.setCapability(ChromeOptions.CAPABILITY, options); 

     driver = new ChromeDriver(capabilities); 
     driver.manage().deleteAllCookies(); 
     driver.manage().window().maximize(); 
     driver.get(baseurl); 
    } 

    @Test(priority = 2) 
    public void loginpageDetail() { 



     WebElement username = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("UserName"))); 
     username.sendKeys("userName"); 

     WebElement password = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("Password"))); 
     password.sendKeys("passWord"); 

     WebElement button = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("ButtonClick"))); 
     button.click(); 
    } 

    // Selecting and clicking DetailSearch menu 
    @Test(priority = 3) 
    public void detailSelect() {  
     WebElement detailMenu = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("XPath"))); 
     detailMenu.click(); 



     // Datepicker of "From" calendar 
     WebElement datepickerFrom = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("calendarId01"))); 
     datepickerFrom.click(); 


     WebElement monthPreviousFrom = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("leftarrow_calendar_NP']/img"))); 
     monthPreviousFrom.click(); 


     WebElement dayFirst = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("XPath"))); 
     dayFirst.click(); 


     // Datepicker of "To" calendar 
     WebElement datepickerTo = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("calendarId02"))); 
     datepickerTo.click(); 


     WebElement monthPreviousTo = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("leftarrow_calendar_NP']/img"))); 
     monthPreviousTo.click(); 


     WebElement monthLast = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("XPath"))); 
     monthLast.click(); 

    } 

     // Click "Submit" 
     WebElement submit = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("ctl00_contentMiddle_btnSearch"))); 



     WebElement logout = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("XPath"))); 
    } 


import java.util.Arrays; 

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.chrome.ChromeDriver; 
import org.openqa.selenium.chrome.ChromeOptions; 
import org.openqa.selenium.remote.DesiredCapabilities; 
import org.openqa.selenium.support.ui.ExpectedConditions; 
import org.openqa.selenium.support.ui.WebDriverWait; 
import org.testng.annotations.BeforeSuite; 
import org.testng.annotations.Test; 

public class Login { 
    public static WebDriver driver; 
    String username = "userName"; 
    String password = "passWord"; 
    String baseurl = "http://mybusiness.com/login.aspx"; 
    WebDriverWait wait; 


public class Details { 
    @BeforeSuite 
    public void instantiateDriver() { 
     System.setProperty("webdriver.chrome.driver","D:\\From H\\Selenium Package\\ChromeDriver\\chromedriver_win32\\chromedriver.exe"); 
     DesiredCapabilities capabilities = DesiredCapabilities.chrome(); 
     capabilities.setCapability("chrome.switches", Arrays.asList("--incognito")); 
     ChromeOptions options = new ChromeOptions(); 
     options.addArguments("--test-type"); 
     options.addArguments("--disable-extensions"); 
     capabilities.setCapability("chrome.binary","D:\\From H\\Selenium Package\\ChromeDriver\\chromedriver_win32\\chromedriver.exe"); 
     capabilities.setCapability(ChromeOptions.CAPABILITY, options); 

     driver = new ChromeDriver(capabilities); 
     driver.manage().deleteAllCookies(); 
     driver.manage().window().maximize(); 

     wait = new WebDriverWait(driver, 10); // 10 seconds 
    } 

    @Test(priority = 0) 
    public void loginpage() { 
     driver.get(baseurl); 


     WebElement username = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("UserName"))); 
     username.sendKeys("userName"); 

     WebElement password = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("PassWord"))); 
     password.sendKeys("passWord"); 

     WebElement button = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("ButtonClick"))); 
     button.click(); 

    } 

    // Selecting a date from date picker 
    @Test(priority = 1) 
    public void RecordSearch() { 
     WebElement calendar = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("CalendarId"))); 
     calendar.click(); 


     WebElement month = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("XPath"))); 
     month.click(); 


     WebElement day = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("XPath"))); 
     day.click(); 


     WebElement submit = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("Submit"))); 
     submit.click(); 


    } 

} 
} 
+0

몇 가지 오류가 발생하여 몇 가지 방법을 제거했습니다. –

+0

... 나는 당신의 해결책을 가지고 시험해 보았다. 하지만 작동하지 않습니다. 3 개의 브라우저 인스턴스를 열고 있지만 사용자 이름과 비밀번호는 입력하지 않았습니다. – Arvind

+1

코드 시작 부분에 중단 점을 놓고 3 개의 다른 브라우저 인스턴스가 시작된 위치를 단계별로 안내하고 단계별로 수정/제거하십시오. – JeffC

0

는 드라이버 파일을 보관 폴더 구조가/JRE 파일이 변경 여부를 여부를 확인하시기 바랍니다. 폴더 이름의 작은 변경조차도이 문제의 원인이 될 수 있습니다. 변경된 경우 - 경로를 환경 변수로 업데이트하십시오.

+1

그 문제는 아닙니다. 이 문제는 프로 그램의 논리에있었습니다. – Arvind

관련 문제