2016-08-04 144 views
0

我得到“无法实例化class packageName.pageName”将尝试在selenium中执行测试用例。我尝试了很多,但没有找到我犯这个错误的地方。无法实例化类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等待=新的WebDriverWait(驱动程序,10)”; // 10秒“ – Arvind

+0

”这是否意味着缺少一些代码,因为它看起来不像第25行? – Josh

回答

1

那是因为你已经在方法中实例化驱动程序。尝试实例化它的方法,你可以使用@BeforeSuite

此行还有一个问题WebDriverWait wait = new WebDriverWait(driver, 10);。在这里你已经创建了一个空驱动程序的等待实例,因为驱动程序稍后得到实例化。

我不确定,为什么人们写这么复杂的代码。你可能已经没有使它达到相同的那么多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

相关问题