java - selenium NullPointerException 解决方案的驱动程序
问题描述
我有测试用例。
public class BaseTest {
public WebDriver driver;
...
@BeforeClass(alwaysRun = true)
public void setUp() throws Exception {
driver = getDriver("chrome");
...}
}
我正在使用带有 testng 的侦听器。
public void onTestFailure(ITestResult result) {
String excepionMessage=Arrays.toString(result.getThrowable().getStackTrace());
testReport.get().fail("<details>" + "<summary>" + "<b>" + "<font color=" + "red>" + "Exception Occured:Click to see"
+ "</font>" + "</b >" + "</summary>" +excepionMessage.replaceAll(",", "<br>")+"</details>"+" \n");
extentManager.captureScreenshot();
}
extentManager 有这样的 captureScreentshot
public void captureScreenshot() {
Screenshot screenshot = new AShot().shootingStrategy(ShootingStrategies.viewportPasting(1000)).takeScreenshot(driver);
Date d = new Date();
screenshotName = "Record_" + "customer.getRecordNum()" + "_" + d.toString().replace(":", "_").replace(" ", "_") + ".jpg";
try {
ImageIO.write(screenshot.getImage(),"jpg",new File(".//reports//" + screenshotName));
} catch (IOException e) {
e.printStackTrace();
}
}
在 extentManager 中必须有来自测试库的驱动程序实例,但它为空。
所以我添加了 Driver 单例模式类。
public class Driver {
private static Driver driver = null;
public WebDriver webDriver;
Driver(WebDriver webDriver){
this.webDriver = webDriver;
};
public static Driver getInstance(WebDriver webDriver){
//lazy initialization
if (driver== null)
driver = new Driver(webDriver);
return driver;
}
}
固定基数测试
// static constants
public static Driver DRIVER;
@BeforeClass(alwaysRun = true)
public void setUp() throws Exception {
DRIVER = Driver.getInstance(getDriver("chrome"));
driver = DRIVER.webDriver;
并捕获截图
public class ExtentManager extends BaseTest {
...
public void captureScreenshot() {
Screenshot screenshot = new AShot().shootingStrategy(ShootingStrategies.viewportPasting(1000)).takeScreenshot(DRIVER.webDriver);
Date d = new Date();
screenshotName = "Record_" + "customer.getRecordNum()" + "_" + d.toString().replace(":", "_").replace(" ", "_") + ".jpg";
try {
ImageIO.write(screenshot.getImage(),"jpg",new File(".//reports//" + screenshotName));
} catch (IOException e) {
e.printStackTrace();
}
}
我添加了 DRIVER 的静态变量。
驱动程序-> DRIVER.webDriver
因为我是 JAVA 编程的新手。我不知道如何处理类之间的实例。有哪位专家可以对此发表评论吗?
谢谢你。
解决方案
推荐阅读
- azure - Azure 静态 Web 应用 - 使用 AD SSO 保护
- android - 如何在 gradlew Android 终端上使用参数?
- python - 更新 OpenGL VBO 的最快方法(包括可能扩展的缓冲区)
- r - 从字符串中提取年和月的持续时间并转换为月
- r - Rcpp::abs 默认为 int 而不是 double?
- python - 根据另一个数据框向 Pandas 数据框添加列并将值设置为零
- flutter - 带有透明文本的颤动按钮
- .htaccess - 404 使用 symfony 5 API 和 Vuejs 作为不同根文件夹中的前端
- java - 问号(?)在 jax-rs 球衣中被 %3F 取代
- r - 如何生成直方图,使其在 ggplot2 的设定范围之间恰好有 n 个 bin?