Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java和selenium在执行期间获取以下类型的异常_Java_Selenium_Maven_Pom.xml - Fatal编程技术网

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

使用java和selenium在执行期间获取以下类型的异常,java,selenium,maven,pom.xml,Java,Selenium,Maven,Pom.xml,运行以下代码时,得到空指针异常,但交叉检查了位置,这是正常的 尝试了几次,但得到了相同的响应 已创建用于登录的pom类 已创建主页的pom类 创建pet的测试类 ################################################################# 签名类 package com.Medeventage.crm.pages; import org.openqa.selenium.WebDriver; import org.openqa.seleniu

运行以下代码时,得到空指针异常,但交叉检查了位置,这是正常的

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

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

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

签名类

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, Failures: 1, 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(“automatic”)
objcreatepage
。我在代码中没有看到该对象的任何初始化。您刚刚声明了它,但尚未初始化它


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

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