gpt4 book ai didi

java - TestNG 参数化 : NullPointerException when passing browser type to Base class

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

我有一个基类,其中有一个方法可以打开我的 URL,在我的测试用例中称为 @BeforeMethod。该方法采用浏览器类型的字符串参数来确定调用哪个浏览器。我正在尝试在 xml 启动文件中设置一个参数,该参数可以在我的 @BeforeMethod 中作为 openURL 方法的参数输入。

这是我的 XML 文件:

<?xml version="1.0" encoding="UTF-8"?>

<suite name="FullRegressionSuite" parallel="false">
<listeners>
<listener class-name="reporting.CustomReporter"></listener>
</listeners>
<test name="Test">
<parameter name ="browserType" value="Chrome"/>
<classes>
<class name="reporting.reporterTest"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->

这是我的测试:

@Listeners(CustomListener.class)
public class reporterTest extends Base {

@Test
public void testOne() {
Assert.assertTrue(true);
}

@Test
public void testTwo() {
Assert.assertTrue(false);
}

@Parameters({ "browserType" })
@BeforeMethod
public void setUp(String browserType) throws InterruptedException {
System.out.println(browserType);
openURL(browserType);
}

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

这是我的基类:

public class Base {

public static WebDriver driver = null;

//CALL WEB BROWSER AND OPEN WEBSITE
public static void openURL(String browser) throws InterruptedException {

//launches browser based on argument given
try{
if (browser == "Chrome") {
System.setProperty("webdriver.chrome.driver", "/Users/rossdonohoe/Desktop/SeleniumJava/Drivers/chromedriver");
driver = new ChromeDriver();
}
else if (browser == "Firefox") {
System.setProperty("webdriver.gecko.driver", "/Users/rossdonohoe/Desktop/SeleniumJava/Drivers/geckodriver");
driver = new FirefoxDriver();
}
else {
System.out.println("Error: browser request not recognized");
}

driver.manage().deleteAllCookies();
driver.manage().window().maximize();

driver.get("https://www.google.com");

}
catch(Exception E) {
E.printStackTrace();
}
}
}

我的 @BeforeMethod 肯定正在接收参数,因为我正在打印它的值进行检查,并且我在控制台中收到“Chrome”。但是,openURL 在“删除所有 cookie”行失败,并出现空指针异常(并且我的行“错误:浏览器请求无法识别”正在控制台中打印),表明该字符串没有作为参数到达 openURL。任何人都可以看到我做错了什么吗?

最佳答案

由于browser是一个字符串变量,因此您需要使用equalscontainsequalsIgnoreCase来检查您正在获取的browser是“Chrome”还是“Firefox”。

因此您需要使用: if(browser.equals("Chrome"))if(browser.equals("Firefox")) 作为条件,而不是您已经使用的条件。

关于java - TestNG 参数化 : NullPointerException when passing browser type to Base class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55125444/

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