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

错误 - “无法调用“org.openqa.selenium.WebElement.sendKeys(java.lang.CharSequence[])”,因为“this.UserName”为空

如何解决错误 - “无法调用“org.openqa.selenium.WebElement.sendKeys(java.lang.CharSequence[])”,因为“this.UserName”为空

我是 Java 和 Selenium 的新手。 下面是我的 POM、驱动程序实用程序和测试用例的 java 类。

当我将测试用例作为 TestNG 测试运行时,我有: 失败:验证登录 java.lang.NullPointerException:无法调用“org.openqa.selenium.WebElement.sendKeys(java.lang.CharSequence[])”,因为“this.userName”为空。

请帮帮我。如果需要更多信息,请告诉我。 提前致谢。

fn example<'a>(text: &'a str) -> impl Iterator<Item = &'a str> + 'a {
    let mut i = 0;
    iter::from_fn(move || {
        if i <= text.len() {
            let chunk = &text[..i];
            i += 1;
            Some(chunk)
        } else {
            None
        }
    })
}

package com.inetBankingV1.pageObjects;

import org.openqa.selenium.WebDriver;

import com.inetBankingV1.utilities.callbrowserDriver;

import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
import org.openqa.selenium.support.How;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.Wait;
import org.openqa.selenium.support.ui.webdriverwait;

public class LoginPage {
    
    WebDriver driver;
    
    @FindBy(how=How.LINK_TEXT,using="Log in")
    WebElement logUser;
    
    @FindBy(how=How.NAME,using="username")
    WebElement userName;
    
    @FindBy(how=How.NAME,using="password")
    WebElement passWord;
    
    
    //constructor
    public LoginPage(WebDriver driver)
    {
        this.driver=driver;
    }
    
    public  void loginCheck(String uname,String passwd)
    {
        userName.sendKeys(uname);
        passWord.sendKeys(passwd);
        logUser.click();
    }

}

    package com.inetBankingV1.utilities;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.remote.DesiredCapabilities;

public class callbrowserDriver {
    
    public WebDriver startApplication(String browser,String baseURL,WebDriver driver)
    
    {
    
    if(browser.equalsIgnoreCase("firefox"))
            {
        System.setProperty("webdriver.gecko.driver","./Drivers/geckodriver.exe");
        FirefoxOptions firefoxOptions = new FirefoxOptions();
        firefoxOptions.setCapability("marionette",true);
         driver = new FirefoxDriver(firefoxOptions);
         
            }
    
    if(browser.equalsIgnoreCase("chrome"))
            {
        System.setProperty("webdriver.chrome.driver","./Drivers/chromedriver.exe");
        driver=new ChromeDriver();
            }
    
    driver.manage().timeouts().pageLoadTimeout(30,TimeUnit.SECONDS);
    driver.manage().window().maximize();
    driver.navigate().to(baseURL);
    
    return driver;

}
    
}

解决方法

看看这是否有效:-

 @FindBy(how=How.ID,using="inline-search-submit")
 WebElement logUser;
    
 @FindBy(how=How.NAME,using="user")
 WebElement userName;
    
 @FindBy(how=How.NAME,using="pass")
 WebElement passWord;
    
,

使用initElements初始化POM类的webelements后问题解决:

LoginPage login=PageFactory.initElements(driver,LoginPage.class);

,
Use below line in your constructor
PageFactory.initElements( driver,this);

----------------------------------------------

public LoginPage(WebDriver driver) 
    {
        this.driver=driver;
        PageFactory.initElements( driver,this);
    }

This should solve your problem.

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

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?