gpt4 book ai didi

java - 使用 JUnit 和 Selenium WebDriver 时浏览器未启动

转载 作者:太空宇宙 更新时间:2023-11-04 13:34:45 25 4
gpt4 key购买 nike

我正在使用 Selenium 构建测试。我试图遵循一些教程并查看此处的信息,但我无法弄清楚为什么我的测试无法正确运行。

我有以下测试设置类(class)

import org.junit.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Parameters;

import java.util.Arrays;

public class TestSetUp {

private WebDriver driver;

public WebDriver getDriver() {
return driver;
}

private void setDriver(int type, String url) {

switch (type) {
case Config.FIREFOX_DRIVER:
System.out.println("Setting drivers for Firefox...");
driver = initFireFoxDriver(url);
break;
default:
System.out.print("invalid browser type");
}
}

private static WebDriver initFireFoxDriver(String url) {
System.out.println("Launching Firefox browser...");
WebDriver driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.navigate().to(url);
return driver;
}

@BeforeClass
public void initializeTestBaseSetup(int type, String url) {
try {
setDriver(1, "google.com");
} catch (Exception e) {
System.out.println("Error....." + Arrays.toString(e.getStackTrace()));
}
}

@AfterClass
public void tearDown() {
driver.quit();
}

@Test
public void startTests() {
System.out.println("Starting Tests...");

}
}

然后我有一个用于在此处登录的测试类

public class LoginPageTest extends TestSetUp {

private WebDriver driver;

@Before
public void setUp() {
driver = getDriver();
}

@Test
public void verifyLoginInFunction() {
System.out.println("Log In functionality being tested...");

LoginPage loginPage = new LoginPage(driver);

Assert.assertTrue("The url is incorrect", loginPage.verifyURL());
Assert.assertTrue("Title did not match", loginPage.verifyLoginTitle());
Assert.assertTrue("Error message did not match", loginPage.verifySignIn());
Assert.assertTrue("\'Forgot Password?\' link is missing", loginPage.verifyForgotPassword());
Assert.assertTrue("Create Account setting not working", loginPage.verifyCreateAccount());
Assert.assertTrue("Additional Licence Key setting not working", loginPage.verifyLicencing());

HomePage homePage = loginPage.signIn(Config.STUDENT, Config.STUDENTPASS);

Assert.assertTrue("Login did not work", homePage.verifyURL());
}
}

我当前的输出是

Starting Tests...

Log In functionality being tested...

java.lang.NullPointerException

at verifyURL(LoginPage.java:20)

at verifyLoginInFunction(LoginPageTest.java:28)

.

.

.

Starting Tests...

Process finished with exit code -1

我确实在这里省略了我的包的路径,但我不明白为什么浏览器无法启动。它永远不会初始化TestBaseSetup,因此它不会到达设置的其余部分。任何帮助或链接将不胜感激。

已修复:我需要添加 xml 文件来运行,而不是测试套件。这是我的testing.xml

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Page Object test example">
<parameter name="url" value="http://google.com/"/>
<parameter name="type" value="firefox"/>
<test name="sample test">
<classes>
<class name="LoginPageTest"/>
</classes>
</test>
</suite>

最佳答案

根据the docs@BeforeClass 方法应该是static 并且应该没有参数:

public static void initializeTestBaseSetup() {
// ...
}

这是必要的,因为顾名思义,这是在实例化对象本身之前调用的。由于框架无法知道为参数提供什么,因此它无法将任何内容传递给该方法。

结果似乎您的初始化只是被 JUnit 忽略了。 (这不会将其本身表现为任何类型的错误或警告?)

这是否直接导致你的空指针异常,我们不能说。这是在 LoginPage 类的 verifyURL 方法的第 20 行发生的,该方法未包含在问题中。尽管这似乎是一个合理的结论。

关于java - 使用 JUnit 和 Selenium WebDriver 时浏览器未启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31815972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com