微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在使用 java 和 selenium 执行期间获得以下类型的异常

如何解决在使用 java 和 selenium 执行期间获得以下类型的异常

运行以下代码时得到空指针异常但交叉检查定位器没问题,

尝试了几次但得到相同的响应,

用于登录的 pom 类已创建 创建主页的 pom 类 创建宠物的测试类

############################################ ##################

签到类

package com.Medeventage.crm.pages;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.ui.Select;

public class Crm_create_Patient_page {

/**
 * 
 * All WebElements are identified by @FindBy annotation
 * 
 */
/// html/body/div[1]/div/div/div[1]/ul/li[1]/a/div[2]
WebDriver driver;
// @FindBy(xpath = "//*[@id=\"actionMenuSidebar\"]/ul/li[1]/a/div[2]")
// WebElement createpetientbutton;
@FindBy(xpath = "//*[@id='first_name']")
WebElement firstname;

@FindBy(xpath = "//*[@id='middle_name_c']")
WebElement middlename;

@FindBy(xpath = "//*[@id='last_name']")
WebElement lastname;

@FindBy(name = "birth_date")
WebElement dateBox;

@FindBy(name = "gender")
WebElement genderdropdown;

@FindBy(name = "race")
WebElement racedropdown;

@FindBy(name = "ethnicity")
WebElement ethnicitydropdown;

@FindBy(name = "phone_home")
WebElement homephone;

@FindBy(name = "phone_mobile")
WebElement mobile;

@FindBy(name = "eaddress")
WebElement email;

@FindBy(name = "primary_care_physician")
WebElement pcpdropdown;

@FindBy(name = "address1")
WebElement address1;

@FindBy(name = "address2")
WebElement address2;

@FindBy(name = "city")
WebElement city;

@FindBy(name = "state1")
WebElement statedropdown;

@FindBy(name = "postal_code")
WebElement postalcode;

@FindBy(name = "cp_email_c")
WebElement emailcheckBox;

@FindBy(name = "sms_c")
WebElement smscheckBox;

@FindBy(css = "#EditView > div.buttons > input[type=button]:nth-child(1)")
WebElement save;

public Crm_create_Patient_page(WebDriver driver) {

    this.driver = driver;

    // This initElements method will create all WebElements

    PageFactory.initElements(driver,this);

}

// //select create patient button
// public void clickcreatepatient() {
// Actions A = new Actions(driver);
// A.click(createpetientbutton).build().perform();

// }
// Set first name in textBox

public void setfName(String fName) {

    firstname.sendKeys(fName);
}
// Set middle name in textBox

public void setmiddleName(String mName) {

    middlename.sendKeys(mName);
}
// Set last name in textBox

public void setlastName(String lName) {

    lastname.sendKeys(lName);
}

public void setdate(String date) {

    dateBox.sendKeys(date);
}

// select gender drop down
public void genderDropDown() {
    Select drop = new Select(genderdropdown);
    drop.selectByVisibleText("Male");
}

// select race drop down
public void raceDropDown() {
    Select drop = new Select(racedropdown);
    drop.selectByVisibleText("Declined to specify");
}

// select ethinicity drop down
public void ethinictyDropDown() {
    Select drop = new Select(ethnicitydropdown);
    drop.selectByVisibleText("Other");
}

public void sethomep(String hphone) {

    homephone.sendKeys(hphone);

}

public void setmphone(String mphone) {

    mobile.sendKeys(mphone);
}

public void setemailadd(String mail) {

    email.sendKeys(mail);

}

// select pcp drop down
public void pcpDropDown() {
    Select drop = new Select(pcpdropdown);
    drop.selectByVisibleText("Derick Trisha");

}
// Set address1 in textBox

public void setaddress1(String add1) {

    address1.sendKeys(add1);
}
// Set address2 in textBox

public void setaddress2(String add2) {

    address2.sendKeys(add2);
}
// Set city in textBox

public void setcity(String cit) {

    city.sendKeys(cit);
}

// select state drop down
public void stateDropDown() {
    Select drop = new Select(statedropdown);
    drop.selectByVisibleText("New York");

}
// Set postalcode in textBox

public void setpincode(String pincode) {

    postalcode.sendKeys(pincode);
}
// Select checkBox

public void clickmailBox() {
    boolean select = emailcheckBox.isSelected();
    System.out.print(select);
    // performing click operation if element is not already selected
    if (select == false) {
        emailcheckBox.click();
    }
}
// Select checkBox

public void clicksmsBox() {
    boolean select = smscheckBox.isSelected();
    System.out.print(select);
    // performing click operation if element is not already selected
    if (select == false) {
        smscheckBox.click();
    }
}

// click login button

public void clicksave() {
        save.click();
    }
}

创建患者分类

package com.Medeventage.crm.test;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;
import org.testng.Assert;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;

import com.Medeventage.crm.pages.Crmlogin;
import com.Medeventage.crm.pages.Crm_create_Patient_page;
import com.Medeventage.crm.pages.Crmhomepage;

public class Crm_Create_Patient {
    public class Crm_login_valid_credential {

    String driverPath = "D:\\CHROME\\chromedriver.exe";

    WebDriver driver;

    Crmlogin objLogin;

    Crmhomepage objHomePage;
    Crm_create_Patient_page objcreatepage;

    @BeforeTest

    public void setup() {

        System.setProperty("webdriver.chrome.driver",driverPath);

        driver = new ChromeDriver();
        driver.manage().window().maximize();

        driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);

        driver.get("https://uatcrm.medevantage.com/index.PHP?module=Users&action=Login");
        // creating object of loginpage

        objLogin = new Crmlogin(driver);

        // Verify login page title

        System.out.println("Log In Page Contains MDCRM As A Part Of title");
        String loginPageTitle = driver.getTitle();
        driver.manage().timeouts().implicitlyWait(10,TimeUnit.SECONDS);
        Assert.assertTrue(loginPageTitle.toLowerCase().contains("mdcrm"));
        System.out.println(loginPageTitle);
        // login to application

        objLogin.loginTocrm("admin","admin");
        // go the next page
        objHomePage = new Crmhomepage(driver);
        // Verify home page
        String actualUrl = "https://uatcrm.medevantage.com/index.PHP?module=patie_patients&action=index";
        String expectedUrl = driver.getcurrenturl();
        Assert.assertEquals(expectedUrl,actualUrl);
        System.out.println("Home Page Opened");
    }

    /**
     * 
     * This test go to
     * https://uatcrm.medevantage.com/index.PHP?module=Users&action=Login
     * 
     * 
     * 
     * Login to application
     * 
     * Verify the home page using Dashboard message
     * 
     * @throws InterruptedException
     * 
     */

    @Test(priority = 0)

    public void test_Home_Page_Appear_Correct() throws InterruptedException {

        // Adding Page Load Time out
        driver.manage().timeouts().pageLoadTimeout(20,TimeUnit.SECONDS);

        // clicking on create Patient page
        System.out.println("Clicking On Create Patient Tab");
        WebElement Createpetient = driver
                .findElement(By.xpath("/html/body/div[1]/div/div/div[1]/ul/li[1]/a/div[2]"));
        Actions act = new Actions(driver);
        act.click(Createpetient).build().perform();
        driver.manage().timeouts().pageLoadTimeout(20,TimeUnit.SECONDS);

        objcreatepage.setfName("Automate");
        objcreatepage.setmiddleName("demo");
        objcreatepage.setlastName("TestPatient");
        objcreatepage.setdate("05092021");
        objcreatepage.genderDropDown();
        objcreatepage.raceDropDown();
        objcreatepage.ethinictyDropDown();
        objcreatepage.sethomep("8989789678");
        objcreatepage.setmphone("8669164533");
        objcreatepage.setemailadd("autodemop@malinator.com");
        objcreatepage.setaddress1("Q11");
        objcreatepage.setaddress2("Church Road");
        objcreatepage.setcity("New York");

        // objcreatepage.createp("auto","demo","testpetient");

        // driver.manage().timeouts().pageLoadTimeout(10,TimeUnit.SECONDS);
        // objcreatepage.creatp1("05092021","8888888888","8669164533",// "autodemo@malinator.com");
        // objcreatepage.creatp2("midletown","Q101","Church Road","89767");
        String createpagetitle = driver.getTitle();
        System.out.println(createpagetitle);

     }
   }

}

登录

package com.Medeventage.crm.pages;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.PageFactory;

public class Crmlogin {

/**
 * 
 * All WebElements are identified by @FindBy annotation
 * 
 */

WebDriver driver;

@FindBy(name = "user_name")

WebElement userName;

@FindBy(name = "username_password")

WebElement password;

@FindBy(name = "Login")

WebElement login;

public Crmlogin(WebDriver driver) {

    this.driver = driver;

    // This initElements method will create all WebElements

    PageFactory.initElements(driver,this);

}
// Set user name in textBox

public void setUserName(String strUserName) {

    userName.sendKeys(strUserName);
}

// Set password in password textBox

public void setPassword(String strPassword) {

    password.sendKeys(strPassword);

}

// Click on login button

public void clickLogin() {

    login.click();

}

/**
 * 
 * This POM method will be exposed in test case to login in the application
 * 
 * @param strUserName
 * 
 * @param strPasword
 * 
 * @return
 * 
 */

public void loginTocrm(String strUserName,String strPasword) {

    // Fill user name

    this.setUserName(strUserName);

    // Fill password

    this.setPassword(strPasword);

    // Click Login button

    this.clickLogin();

  }

}

错误

############################################ ###############

[RemoteTestNG] detected TestNG version 7.3.0
Starting ChromeDriver 89.0.4389.23 (61b08ee2c50024bab004e48d2b1b083cdbdac579-refs/branch-heads/4389@{#294}) on port 33685
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.
[1619767644.909][WARNING]: This version of ChromeDriver has not been tested with Chrome version 90.
Apr 30,2021 12:57:26 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C
Log In Page Contains MDCRM As A Part Of title
MDCRM
Home Page Opened
Clicking On Create Patient Tab
Failed: test_Home_Page_Appear_Correct
java.lang.NullPointerException
    at com.Medeventage.crm.test.Crm_Create_Patient$Crm_login_valid_credential.test_Home_Page_Appear_Correct(Crm_Create_Patient.java:92)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:132)
    at org.testng.internal.TestInvoker.invokeMethod(TestInvoker.java:599)
    at org.testng.internal.TestInvoker.invokeTestMethod(TestInvoker.java:174)
    at org.testng.internal.MethodRunner.runInSequence(MethodRunner.java:46)
    at org.testng.internal.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:822)
    at org.testng.internal.TestInvoker.invokeTestMethods(TestInvoker.java:147)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:128)
    at java.base/java.util.ArrayList.forEach(ArrayList.java:1540)
    at org.testng.TestRunner.privateRun(TestRunner.java:764)
    at org.testng.TestRunner.run(TestRunner.java:585)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:384)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:378)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:337)
    at org.testng.SuiteRunner.run(SuiteRunner.java:286)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:96)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1218)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1140)
    at org.testng.TestNG.runSuites(TestNG.java:1069)
    at org.testng.TestNG.run(TestNG.java:1037)
    at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)


===============================================
    Default test
    Tests run: 1,Failures: 1,Skips: 0
===============================================


===============================================
Default suite
Total tests run: 1,Passes: 0,Skips: 0
===============================================

[TestNG] Reporter [FailedReporter passed=0 Failed=0 skipped=0] Failed
java.lang.NullPointerException
    at java.base/java.util.HashMap.putMapEntries(HashMap.java:496)
    at java.base/java.util.HashMap.putAll(HashMap.java:780)
    at org.testng.xml.XmlClass.setParameters(XmlClass.java:233)
    at org.testng.reporters.FailedReporter.createXmlClasses(FailedReporter.java:199)
    at org.testng.reporters.FailedReporter.createXmlTest(FailedReporter.java:150)
    at org.testng.reporters.FailedReporter.generateXmlTest(FailedReporter.java:124)
    at org.testng.reporters.FailedReporter.generateFailureSuite(FailedReporter.java:64)
    at org.testng.reporters.FailedReporter.generateReport(FailedReporter.java:49)
    at org.testng.TestNG.generateReports(TestNG.java:1099)
    at org.testng.TestNG.run(TestNG.java:1042)
    at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)

解决方法

我认为您在此行 objcreatepage.setfName("Automate"); 上为对象 objcreatepage 获得了 NPE。我在您的代码中没有看到该对象的任何初始化。您刚刚声明了它,但尚未对其进行初始化。

你能确认这是你班级的第 92 行吗?我看不到行号所以不知道。

,

你是如何安装TestNG的。对我来说,testNG 下载链接显示 404 错误

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。