Wie kann ich die initialisieren web-Fahrer weltweit?
Arbeite ich an automation mit selenium webdriver , java. Immer nullpointerexception und es sagt der Treiber ist null.
Meine code-Struktur ist unten angegeben :
- Paket Utility
- Basisklasse
- Login-Klasse
- App_constant Klasse
Paket Hinzufügen Benutzer
- Benutzer hinzufügen Klasse
Utility package code :
package Utility;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class Base {
public static WebDriver driver = null;
//CALL WEB BROWSER AND OPEN WEBSITE
public static void openURL()
{
try{
System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe");
driver = new ChromeDriver();
driver.get(Constant_value_utility.URL);
}catch(Exception E)
{
E.printStackTrace();
}
}
}
package Utility;
public class Constant_value_utility {
//OPEN URL
public static final String URL = "Site URL";
//LOGIN FIELDS
public static final String loginbox = "UserName";
public static final String passbox = "Password";
//LOGIN DATA
public static final String username = "test";
public static final String password = "test";
public static final String loginbt = "btnsubmit";
}
package Utility;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
public class Login_Page {
public static WebDriver driver;
public static void login()
{
Base.openURL();
driver.manage().window().maximize();
driver.findElement(By.id(Constant_value_utility.loginbox)).sendKeys(Constant_value_utility.username);
driver.findElement(By.id(Constant_value_utility.passbox)).sendKeys(Constant_value_utility.password);
driver.findElement(By.id(Constant_value_utility.loginbt)).click();
}
}
Benutzer hinzufügen Paket code
package Adduser;
import Utility.Base;
import Utility.Login_Page;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class Add_User {
public static void main(String[] args){
{
//LOGIN TO SITE
Base.openURL();
Login_Page.login();
}}}
Nun Meine Frage ist ich habe bereits öffentliche statische Methode openurl() in der Basisklasse und webdriver ist initialisiert es. Aber Wenn ich dieselbe Methode in einer anderen Klasse der gleichen Paket und die anderen Pakete , Warum es bei mir zu einer nullpointerexception für webdriver?
Ist das notwendig, code zu schreiben, initialisieren, webdriver und rufen Sie den browser in jeder Klasse. Wie kann ich die initialisieren web-Fahrer weltweit, so erkläre ich es einmal nennen können, wo jeder in meinem Projekt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre webDriver ist deklariert in der anderen Klasse zu, so
Treiber ist nicht initialisiert.
versuchen Sie, schreiben Sie Ihre
Base.openUrl()
Methode um den webDriveredit: deine Klasse Felder sind sichtbar für andere Klassen, das ist wahr. aber um das zu bekommen den man von der richtigen Klasse, die Sie sollten versuchen, so etwas wie
Base.driver
da
Base.driver != Login_Page.driver
edit2: hier ist ein Beispiel, wie eine Arbeiterklasse Aussehen könnte
}
driver
innerhalb derLogin_page
Klasse, seine implizitLogin_page.driver
, wenn Sie Treiber inBase
Klasse, seine implizitBase.driver
, und wie bereits in meinem edit, Sie sind nicht das gleicheWebdriver driver;
in allen Klassen, außer derBase
- und ersetzen-überall, außer inBase
driver
mitBase.driver
classname.(dot)methodname
.. Danke.. Aber ist das standard - / richtige Weg, um call-Treiber...Oder ich mache es in der falschen Weise, wenn wir sehen, nach einigen Programmier-standard-Weg...private
. in der genannten Methode würde ich Sie wieder die Treiber und bevor ich das machen würde, sicher, dass es nichtnull
.