swati gapat Ответов: 0

Получение java.lang.runtimeexception: java.lang.nullpointerexception для ashot во время выполнения тестового случая.


получение ниже во время выполнения тестового случая в selenium webdriver.

java.lang.RuntimeException: java.lang.NullPointerException
	at ru.yandex.qatools.ashot.util.InnerScript.execute(InnerScript.java:29)
	at ru.yandex.qatools.ashot.shooting.ViewportPastingDecorator.getFullHeight(ViewportPastingDecorator.java:67)
	at ru.yandex.qatools.ashot.shooting.ViewportPastingDecorator.getScreenshot(ViewportPastingDecorator.java:41)
	at ru.yandex.qatools.ashot.shooting.ViewportPastingDecorator.getScreenshot(ViewportPastingDecorator.java:35)
	at ru.yandex.qatools.ashot.AShot.takeScreenshot(AShot.java:143)
	at selenium.org.sample.SampleProject.Screenshot.ScreenshotPage.ScreenshotPage1(ScreenshotPage.java:14)



ниже приведен мой класс к скриншоту
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import ru.yandex.qatools.ashot.AShot;
import ru.yandex.qatools.ashot.Screenshot;
import ru.yandex.qatools.ashot.shooting.ShootingStrategies;
import selenium.org.sample.SampleProject.TestBase.TestBase;

public class ScreenshotPage extends TestBase
{
	 public void ScreenshotPage1() throws InterruptedException, IOException
	{ 
		Screenshot fpScreenshot = new AShot().shootingStrategy(ShootingStrategies.viewportPasting(1000)).takeScreenshot(driver);
	    ImageIO.write(fpScreenshot.getImage(),"PNG",new File("D:/selenium/"+System.currentTimeMillis()+".png"));
	 }
}


а ниже я вызываю метод класса screenshotPage.

import java.io.IOException;
import org.openqa.selenium.support.PageFactory;
import org.testng.Assert;
import org.testng.annotations.Test;
import selenium.org.sample.SampleProject.UIAction.SignIn;
import selenium.org.sample.SampleProject.ExcelReader.ExcelReader;
import selenium.org.sample.SampleProject.Screenshot.ScreenshotPage;

public class AppTest extends ExcelReader
{
	@Test(dataProvider="testdata")
	public void Log(String email,String pwd) throws IOException, InterruptedException
	{
		ScreenshotPage S=new ScreenshotPage();
		System.out.println("Sign in page");
		SignIn loginpage = PageFactory.initElements(driver, SignIn.class);
		 loginpage.setUserName(email); // Enter username
		 loginpage.setPwd(pwd); // Enter password
		 Thread.sleep(8000);
		 S.ScreenshotPage1();//calling method from ScreenshotPage class 
		 loginpage.Sign_In_btn();// Submit button click
		 driver.manage().window().maximize();
		 try
		 {
		Assert.assertEquals(driver.getTitle(),"My account - My Store");
	     System.out.println("Log  IN successfull1");
		 }
		 catch(AssertionError E)
		 {
			 System.out.println("Log  IN un-successfull"+E);
		 }
		 Thread.sleep(8000);
		S.ScreenshotPage1();	 
	} 


Что я уже пробовал:

приведенный ниже код успешно работает, сталкиваясь с этой проблемой только при вызове метода.

import java.io.IOException;
import org.openqa.selenium.support.PageFactory;
import org.testng.Assert;
import org.testng.annotations.Test;
import selenium.org.sample.SampleProject.UIAction.SignIn;
import selenium.org.sample.SampleProject.ExcelReader.ExcelReader;
import selenium.org.sample.SampleProject.Screenshot.ScreenshotPage;

public class AppTest extends ExcelReader
{
	@Test(dataProvider="testdata")
	public void Log(String email,String pwd) throws IOException, InterruptedException
	{
		ScreenshotPage S=new ScreenshotPage();
		System.out.println("Sign in page");
		SignIn loginpage = PageFactory.initElements(driver, SignIn.class);
		 loginpage.setUserName(email);// Enter username
		 loginpage.setPwd(pwd);// enter password
		 Thread.sleep(8000);
		Screenshot fpScreenshot = new AShot().shootingStrategy(ShootingStrategies.viewportPasting(1000)).takeScreenshot(driver);
	     ImageIO.write(fpScreenshot.getImage(),"PNG",new File("D:/selenium/"+System.currentTimeMillis()+".png"));

		loginpage.Sign_In_btn();// clicks button
		 driver.manage().window().maximize();
		 try
		 {
		Assert.assertEquals(driver.getTitle(),"My account - My Store");
	     System.out.println("Log  IN successfull1");
	
		 }
		 catch(AssertionError E)
		 {
			 System.out.println("Log  IN un-successfull"+E);
		 }
		 Thread.sleep(8000);
		S.ScreenshotPage1();
	} 

Richard MacCutchan

В сообщении об ошибке четко указано, что ошибка возникает в строке 29 Innerscript.java-да. Где этот код?

Jochen Arndt

Драйвер переменной нигде не определен и не инициализирован в вашем коде.

swati gapat

Он находится в TestBase, а страница скриншота расширяет TestBase.

Jochen Arndt

И правильно ли он там инициализирован?

0 Ответов