Member 13118422 Ответов: 1

Java selenium - получение исключения java.lang.nullpointerexception


Я практикуюсь для java selenium и в конечном итоге получаю следующую проблему, когда пытаюсь ввести идентификатор электронной почты в указанный url-адрес.Пожалуйста, помогите исправить эту проблему


Ява.яз.Исключение NullPointerException
в org.openqa.selenium.support.pagefactory.DefaultElementLocator.findElement(DefaultElementLocator.java:69)
в org.openqa.selenium.support.pagefactory.internal.LocatingElementHandler.invoke(LocatingElementHandler.java:38)
в com.sun.proxy.$Proxy14.sendKeys(неизвестный источник)
на практике.pagesui.Первая страница.launchurl(Firstpage.java:79)
на практике.страницы.Firstpagefixture.user_select_Email_ID(Firstpagefixture.java:38)
при ✽.Учитывая valid_Email_id пользователя(функции/программы FrontPage.характеристика:4)

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

public class Firstpage 
{
	public  WebDriver driver;

	

	public  Firstpage(WebDriver driver) {
		this.driver = driver;
		PageFactory.initElements(driver, this);
	} 
	
@FindBy(xpath  = "//input[@id='inputEmail']")
	WebElement Email;

UIutilitytest Helpers=new UIutilitytest();

public void launchurl() throws Throwable 
	{
		 
		driver=Helpers.getdriver();
		
		driver.get("https://phptravels.org/clientarea.php");
		
	       driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
	       
	       driver.manage().window().maximize();
	       
	     Email.sendKeys("sa@gmail.com");
		
  }
}



Класс помощников :

public class UIutilitytest {
	public  WebDriver driver;

	public  WebDriver getdriver() {
		
		String exePath = "C:\\Users\\Desktop\\Test\\chromedriver.exe";
		System.setProperty("webdriver.chrome.driver",exePath);
		driver = new ChromeDriver();
		return driver;

	} 



public class Firstpagefixture
{
	public  WebDriver driver;
	
	

	@Given("^user_select_Email_ID$")
	public void user_select_Email_ID() throws Throwable 
	{
		Firstpage firstpg=new Firstpage(driver);
		firstpg.launchurl();
		
	}
}

Richard MacCutchan

Это помогло бы (в основном вам), если бы вы показали нам фактические строки кода, упомянутые в окончательных сообщениях об ошибках. i.e Firstpage.java:79, Firstpagefixture.java:38 и Features/Frontpage.особенность:4.

Member 13118422

Я использую файл функций cucumber для запуска скрипта...соответствующее имя файла функций-Frontpage.особенность.
Особенность: действие входа в систему

Сценарий: Успешный Вход В Систему
пользователь выбирает идентификатор электронной почты

Richard MacCutchan

Ну, это не имеет никакого отношения к приведенным выше сообщениям об ошибках.

1 Ответов

Рейтинг:
1

OriginalGriff

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

Позвольте мне просто объяснить, что означает ошибка: вы пытались использовать переменную, свойство или возвращаемое значение метода, но оно содержит null - что означает, что в переменной нет экземпляра класса.
Это немного похоже на карман: у вас есть карман в рубашке, который вы используете, чтобы держать ручку. Если вы сунете руку в карман и обнаружите, что там нет ручки, вы не сможете подписать свое имя на листе бумаги - и вы получите очень смешные взгляды, если попытаетесь! Пустой карман дает вам нулевое значение (здесь нет ручки!), поэтому вы не можете сделать ничего, что обычно делали бы, когда вы извлекли свою ручку. Почему он пуст? Вот в чем вопрос - может быть, вы забыли взять ручку, когда уходили из дома сегодня утром, или, возможно, вы оставили ручку в кармане вчерашней рубашки, когда снимали ее вчера вечером.

Мы не можем сказать, потому что нас там не было, и, что еще важнее, мы даже не можем видеть вашу рубашку, не говоря уже о том, что находится в кармане!

Вернемся к компьютерам, и вы каким - то образом сделали то же самое-и мы не можем увидеть ваш код, а тем более запустить его и узнать, что содержит null, когда это не должно быть.
Но вы можете - и ваша IDE поможет вам здесь. Запустите свою программу в отладчике, и когда она выйдет из строя, она покажет вам строку, в которой обнаружена проблема. Затем вы можете начать просматривать различные его части, чтобы увидеть, какое значение равно null, и начать просматривать свой код, чтобы узнать, почему. Поэтому поставьте точку останова в начале метода, содержащего строку ошибки, и снова запустите программу с самого начала. На этот раз VS остановится перед ошибкой и позволит вам изучить, что происходит, пройдя через код, глядя на ваши значения.

Но мы не можем этого сделать - у нас нет вашего кода, мы не знаем, как его использовать, если бы он у нас был, у нас нет ваших данных. Так что попробуйте - и посмотрите, сколько информации вы можете узнать!


Member 13118422

Спасибо за ответ . Но думаю, что у меня есть сомнения по поводу вышеупомянутого кода упоминания в Firstpage.java файл класса, если я непосредственно передаю элемент, как этот driver.findElement(By.xpath(""//input[@id='inputEmail']"")). sendkeys("") это работает .



В то время как он не работает, когда я храню элемент в переменной web element и использую его
@FindBy(xpath = "//input[@id='inputEmail']")
Электронная Почта WebElement;

Электронная почта.sendKeys("sa@gmail.com");

OriginalGriff

Как вы думаете, почему он там?
Не "думайте, что это может быть там" - используйте отладчик и узнайте. Затем используйте отладчик, чтобы посмотреть, что такое null, и подумать о том, что это должно быть. Затем начните искать, почему это не так, как вы ожидаете...

Мы не можем этого сделать - у нас нет доступа к вашему коду, пока он работает, или к данным, которые ему нужны, чтобы показать проблему!