Получение 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
И правильно ли он там инициализирован?