无法实例化 class 主页
Cannot instantiate class HomePage
嗨,我正在努力看看我做错了什么我每次都在尝试使用 TestNG 的 selenium webdriver 非常基本的东西,但我不明白为什么当我把所有东西都放入我之前 chrome 时会启动.但我希望我的代码更整洁,不那么笨拙。看来我需要将驱动程序固定在我的 class 中,以便它具有全局影响。而不是在我创建的每个新测试中都安装一个新的网络驱动程序。有更好的方法吗?
Cannot instantiate class HomePage
at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:40)
at org.testng.internal.ClassHelper.createInstance1(ClassHelper.java:363)
at org.testng.internal.ClassHelper.createInstance(ClassHelper.java:275)
at org.testng.internal.ClassImpl.getDefaultInstance(ClassImpl.java:126)
at org.testng.internal.ClassImpl.getInstances(ClassImpl.java:191)
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.*;
public class HomePage {
WebDriver driver = new ChromeDriver();
@BeforeTest
public void beforeTest() {
System.setProperty("webdriver.chrome.driver", "C:/webdrivers/chromedriver81/chromedriver.exe");
driver.get("http://www.dotdotloans.co.uk");
}
@Test
public void verify36monthloan3250() {
driver.findElement(By.cssSelector("Tarife")).click();
// confirm monthly repayment
// credit charge 2 decimal places
//total to pay 2 decimal places
//APR
//Click Apply now
//verify string has 3250 and 36 months
System.out.println("Welcome");
}
@AfterTest
public void AfterTest() {
driver.quit();
}
}
此行 WebDriver driver = new ChromeDriver();
在您设置所需 属性 以设置可执行文件路径之前执行:
System.setProperty("webdriver.chrome.driver", "C:/webdrivers/chromedriver81/chromedriver.exe");
您可以在静态初始化块
中设置 属性 值
public class HomePage{
static{
System.setProperty(blah-blah);
}
WebDriver driver = new ChromeDriver();
// ..
}
或在设置可执行路径 属性 值后在 @BeforeTest
中创建新驱动程序。 后者是更自然的方式。
P.S. - 我不确定,但即使使用带有静态初始化的修复程序,您的代码也可能无法正常工作,因为 TestNG 可能会重新使用测试 class 对象,并且由于您 退出 您的驱动程序,您的 class 的第二个测试将无法开始(如果您将添加第二个测试)。
嗨,我正在努力看看我做错了什么我每次都在尝试使用 TestNG 的 selenium webdriver 非常基本的东西,但我不明白为什么当我把所有东西都放入我之前 chrome 时会启动.但我希望我的代码更整洁,不那么笨拙。看来我需要将驱动程序固定在我的 class 中,以便它具有全局影响。而不是在我创建的每个新测试中都安装一个新的网络驱动程序。有更好的方法吗?
Cannot instantiate class HomePage
at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:40)
at org.testng.internal.ClassHelper.createInstance1(ClassHelper.java:363)
at org.testng.internal.ClassHelper.createInstance(ClassHelper.java:275)
at org.testng.internal.ClassImpl.getDefaultInstance(ClassImpl.java:126)
at org.testng.internal.ClassImpl.getInstances(ClassImpl.java:191)
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.*;
public class HomePage {
WebDriver driver = new ChromeDriver();
@BeforeTest
public void beforeTest() {
System.setProperty("webdriver.chrome.driver", "C:/webdrivers/chromedriver81/chromedriver.exe");
driver.get("http://www.dotdotloans.co.uk");
}
@Test
public void verify36monthloan3250() {
driver.findElement(By.cssSelector("Tarife")).click();
// confirm monthly repayment
// credit charge 2 decimal places
//total to pay 2 decimal places
//APR
//Click Apply now
//verify string has 3250 and 36 months
System.out.println("Welcome");
}
@AfterTest
public void AfterTest() {
driver.quit();
}
}
此行 WebDriver driver = new ChromeDriver();
在您设置所需 属性 以设置可执行文件路径之前执行:
System.setProperty("webdriver.chrome.driver", "C:/webdrivers/chromedriver81/chromedriver.exe");
您可以在静态初始化块
中设置 属性 值public class HomePage{
static{
System.setProperty(blah-blah);
}
WebDriver driver = new ChromeDriver();
// ..
}
或在设置可执行路径 属性 值后在 @BeforeTest
中创建新驱动程序。 后者是更自然的方式。
P.S. - 我不确定,但即使使用带有静态初始化的修复程序,您的代码也可能无法正常工作,因为 TestNG 可能会重新使用测试 class 对象,并且由于您 退出 您的驱动程序,您的 class 的第二个测试将无法开始(如果您将添加第二个测试)。